├── .editorconfig ├── .eslintignore ├── .eslintrc.js ├── .gitignore ├── .npmignore ├── LICENSE ├── README-zh_CN.md ├── README.md ├── babel.config.js ├── build ├── release.sh ├── rollup.config.js └── rollup.dev.js ├── examples ├── index.html └── index.js ├── package-lock.json ├── package.json ├── src ├── config.js ├── enum.js ├── index.js ├── polyfill.js └── tools.js └── types ├── enum.d.ts ├── index.d.ts ├── recorderx.d.ts ├── tools.d.ts └── tsconfig.json /.editorconfig: -------------------------------------------------------------------------------- 1 | root = true 2 | 3 | [*] 4 | charset = utf-8 5 | indent_style = space 6 | indent_size = 2 7 | end_of_line = lf 8 | insert_final_newline = true 9 | trim_trailing_whitespace = true 10 | -------------------------------------------------------------------------------- /.eslintignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | dist 3 | esm 4 | lib 5 | types 6 | examples/index.html 7 | -------------------------------------------------------------------------------- /.eslintrc.js: -------------------------------------------------------------------------------- 1 | const { NODE_ENV } = process.env; 2 | 3 | module.exports = { 4 | root: true, 5 | 6 | extends: ['airbnb-base'], 7 | 8 | parserOptions: { 9 | ecmaVersion: 2018, 10 | sourceType: "module" 11 | }, 12 | 13 | parser: "babel-eslint", 14 | 15 | env: { 16 | es6: true, 17 | node: true, 18 | browser: true 19 | }, 20 | 21 | globals: { 22 | window: false, 23 | document: false, 24 | navigator: false 25 | }, 26 | 27 | rules: { 28 | 'no-console': NODE_ENV === 'production' 29 | ? ['error', { allow: ['warn', 'error'] }] 30 | : 'off', 31 | 'no-debugger': NODE_ENV === 'production' 32 | ? 'error' 33 | : 'off', 34 | 'linebreak-style': ['error', 'unix'], 35 | 'max-len': ['error', { code: 120 }], 36 | 'no-param-reassign': 'off', 37 | 'func-names': 'off', 38 | 'space-before-function-paren': [ 39 | 'error', 40 | { 41 | anonymous: 'always', 42 | named: 'always', 43 | asyncArrow: 'always', 44 | }, 45 | ] 46 | } 47 | }; 48 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | dist 3 | esm 4 | lib 5 | .DS_Store 6 | .vscode 7 | .idea 8 | npm-debug.log 9 | lerna-debug.log 10 | yarn-error.log 11 | -------------------------------------------------------------------------------- /.npmignore: -------------------------------------------------------------------------------- 1 | build 2 | node_modules 3 | examples 4 | src 5 | .DS_Store 6 | .editorconfig 7 | .eslintignore 8 | .eslintrc 9 | .gitignore 10 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2018 Jialiang T. 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-zh_CN.md: -------------------------------------------------------------------------------- 1 | # recorderx 2 | 3 | 基于 WebRTC api 的浏览器录音工具库 4 | 5 | 支持导出 WAV、PCM、RAW 格式 6 | 7 | 支持 Typescript. 8 | 9 | --- 10 | 11 | [English](./README.md) | 简体中文 12 | 13 | ## 检查你的浏览器是否支持录音 14 | 15 | [Demo](https://zousdie.github.io/recorderx/) 16 | 17 | ## 安装 18 | 19 | ### NPM 20 | 21 | ```shell 22 | npm install recorderx --sava 23 | ``` 24 | 25 | ### Yarn 26 | 27 | ```shell 28 | yarn add recorderx 29 | ``` 30 | 31 | ## 快速上手 32 | 33 | ```javascript 34 | import Recorderx, { ENCODE_TYPE } from "recorderx"; 35 | 36 | const rc = new Recorderx(); 37 | 38 | // start recorderx 39 | rc.start() 40 | .then(() => { 41 | console.log("start recording"); 42 | }) 43 | .catch(error => { 44 | console.log("Recording failed.", error); 45 | }); 46 | 47 | // pause recorderx 48 | rc.pause(); 49 | 50 | // get wav, a Blob 51 | var wav = rc.getRecord({ 52 | encodeTo: ENCODE_TYPE.WAV, 53 | compressible: true 54 | }); 55 | 56 | // get wav, but disable compression 57 | var wav = rc.getRecord({ 58 | encodeTo: ENCODE_TYPE.WAV 59 | }); 60 | ``` 61 | 62 | ## 使用 63 | 64 | ### Recorderx 构造函数 65 | 66 | 创建实例 67 | 68 | - `recordable: boolean` 69 | 70 | 是否支持录制, 默认为 `true`. 71 | 72 | - `sampleRate: number` 73 | 74 | WAV 采样率, 默认为 `16000`, 推荐使用 `16000`. 75 | 76 | - `sampleBits: number` 77 | 78 | WAV 音频深度, 默认为 `16`. 79 | 80 | 可选值: `16` or `8` 81 | 82 | - `bufferSize: number` 83 | 84 | 缓冲区大小,以样本帧为单位, 默认为 `16384`. 85 | 86 | 可选值: `256`, `512`, `1024`, `2048`, `4096`, `8192`, `16384`. 87 | 88 | ```typescript 89 | interface RecorderxConstructorOptions { 90 | recordable?: boolean 91 | bufferSize?: number 92 | sampleRate?: number 93 | sampleBits?: number 94 | } 95 | 96 | constructor ({ recordable, bufferSize, sampleRate, sampleBits }?: RecorderxConstructorOptions) 97 | ``` 98 | 99 | ### Recorderx 实例属性 100 | 101 | recorder 实例状态 102 | 103 | ```typescript 104 | enum RECORDER_STATE { 105 | READY, 106 | RECORDING 107 | } 108 | 109 | readonly state: RECORDER_STATE 110 | ``` 111 | 112 | AudioContext 实例 113 | 114 | ```typescript 115 | readonly ctx: AudioContext 116 | ``` 117 | 118 | ### Recorderx 方法 119 | 120 | 开始录制 121 | 122 | `audioprocessCallback`: ScriptProcessorNode 的 onaudioprocess 事件回调函数,参考 [MDN](https://developer.mozilla.org/en-US/docs/Web/API/ScriptProcessorNode/onaudioprocess) 123 | 124 | `data`: 当前帧的音频数据 125 | 126 | 你可以在这个回调中对每一帧的音频数据做特殊处理,例如通过 WebSocket 进行实时音频传输 127 | 128 | ```typescript 129 | start (audioprocessCallback?: (data: Float32Array) => any): Promise 130 | ``` 131 | 132 | 暂停 133 | 134 | ```typescript 135 | pause (): void 136 | ``` 137 | 138 | 清除录音缓存 139 | 140 | ```typescript 141 | clear (): void 142 | ``` 143 | 144 | 获取录音数据,支持导出 WAV, PCM, RAW 145 | 146 | - `encodeTo: ENCODE_TYPE` 147 | 148 | 导出的格式,一个枚举类型, 默认为 `RAW`. 149 | 150 | - `compressible: boolean` 151 | 152 | 是否启用压缩, 默认为 `false`,即禁用压缩. 153 | 154 | - **如果启用压缩,则导出的 WAV, PCM, RAW 将都是被压缩的数据,音频采样率为实例化 `Recorderx` 时传入的 `sampleRate`** 155 | 156 | - **如果禁用压缩,则导出的音频数据的采样率将取决于您的录音设备(一般为 48000 或 44100),而不是在实例化 `Recorderx` 时传入的 `sampleRate`** 157 | 158 | - **压缩算法基于线性抽值,在某些采样率下会失真** 159 | 160 | ```typescript 161 | enum ENCODE_TYPE { 162 | RAW = 'raw', 163 | PCM = 'pcm', 164 | WAV = 'wav' 165 | } 166 | 167 | /** 168 | * Get RAW recording data. 169 | */ 170 | getRecord ({ encodeTo, compressible }?: { encodeTo?: ENCODE_TYPE.RAW, compressible?: boolean }): Float32Array 171 | 172 | /** 173 | * Get PCM recording data. 174 | */ 175 | getRecord ({ encodeTo, compressible }?: { encodeTo?: ENCODE_TYPE.PCM, compressible?: boolean }): ArrayBuffer 176 | 177 | /** 178 | * Get WAV recording data. 179 | */ 180 | getRecord ({ encodeTo, compressible }?: { encodeTo?: ENCODE_TYPE.WAV, compressible?: boolean }): Blob 181 | ``` 182 | 183 | ### Audio Tools 184 | 185 | ```javascript 186 | import { audioTools } from "Recorderx"; 187 | 188 | /* 189 | audioTools.merge(); 190 | audioTools.compress(); 191 | audioTools.encodeToPCM(); 192 | audioTools.encodeToWAV(); 193 | */ 194 | ``` 195 | 196 | 合并多个 Float32Array 197 | 198 | ```typescript 199 | function merge(bufferList: Array, length: number): Float32Array; 200 | ``` 201 | 202 | 对 Float32Array 数据进行线性压缩 203 | 204 | ```typescript 205 | function compress( 206 | buffer: Float32Array, 207 | inputSampleRate: number, 208 | outputSampleRate: number 209 | ): Float32Array; 210 | ``` 211 | 212 | 转换为 PCM 213 | 214 | ```typescript 215 | function encodeToPCM(bytes: Float32Array, sampleBits: number): ArrayBuffer; 216 | ``` 217 | 218 | 转换为 WAV 219 | 220 | ```typescript 221 | function encodeToWAV( 222 | bytes: Float32Array, 223 | sampleBits: number, 224 | sampleRate: number 225 | ): Blob; 226 | ``` 227 | 228 | ## 浏览器支持 229 | 230 | 支持所有支持 `getUserMedia` 方法的浏览器 231 | 232 | 不支持微信浏览器,IOS 下仅支持 Safari 233 | 234 | 详细信息请参考 [MDN](https://developer.mozilla.org/en-US/docs/Web/API/MediaDevices/getUserMedia) 235 | 236 | ## License 237 | 238 | MIT 239 | 240 | ## 其他 241 | 242 | 音频压缩参考自 [recording](https://github.com/silenceboychen/recording.git). 243 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # recorderx 2 | 3 | Record and export audio in the browser via WebRTC api. 4 | 5 | Support output raw, pcm and wav format. 6 | 7 | Support Typescript. 8 | 9 | --- 10 | 11 | English | [简体中文](./README-zh_CN.md) 12 | 13 | ## Check your browser 14 | 15 | [Demo](https://zousdie.github.io/recorderx/) 16 | 17 | ## Install 18 | 19 | ### NPM 20 | 21 | ```shell 22 | npm install recorderx --sava 23 | ``` 24 | 25 | ### Yarn 26 | 27 | ```shell 28 | yarn add recorderx 29 | ``` 30 | 31 | ## Quick Start 32 | 33 | ```javascript 34 | import Recorderx, { ENCODE_TYPE } from "recorderx"; 35 | 36 | const rc = new Recorderx(); 37 | 38 | // start recorderx 39 | rc.start() 40 | .then(() => { 41 | console.log("start recording"); 42 | }) 43 | .catch(error => { 44 | console.log("Recording failed.", error); 45 | }); 46 | 47 | // pause recorderx 48 | rc.pause(); 49 | 50 | // get wav, a Blob 51 | var wav = rc.getRecord({ 52 | encodeTo: ENCODE_TYPE.WAV, 53 | compressible: true 54 | }); 55 | 56 | // get wav, but disable compression 57 | var wav = rc.getRecord({ 58 | encodeTo: ENCODE_TYPE.WAV 59 | }); 60 | ``` 61 | 62 | ## Usage 63 | 64 | ### Recorderx constructor 65 | 66 | Creates a recorderx instance 67 | 68 | - `recordable: boolean` 69 | 70 | Whether to support continuous recording, default to `true`. 71 | 72 | - `sampleRate: number` 73 | 74 | Wav sampling rate, default to `16000`. 75 | 76 | - `sampleBits: number` 77 | 78 | Wav sampling bits, default to `16`. 79 | 80 | Optional value: `16` or `8` 81 | 82 | - `bufferSize: number` 83 | 84 | The buffer size in units of sample-frames, default to `16384`. 85 | 86 | Optional value: `256`, `512`, `1024`, `2048`, `4096`, `8192`, `16384`. 87 | 88 | ```typescript 89 | interface RecorderxConstructorOptions { 90 | recordable?: boolean 91 | bufferSize?: number 92 | sampleRate?: number 93 | sampleBits?: number 94 | } 95 | 96 | constructor ({ recordable, bufferSize, sampleRate, sampleBits }?: RecorderxConstructorOptions) 97 | ``` 98 | 99 | ### Recorderx property 100 | 101 | recorder state 102 | 103 | ```typescript 104 | enum RECORDER_STATE { 105 | READY, 106 | RECORDING 107 | } 108 | 109 | readonly state: RECORDER_STATE 110 | ``` 111 | 112 | AudioContext instance 113 | 114 | ```typescript 115 | readonly ctx: AudioContext 116 | ``` 117 | 118 | ### Recorderx methods 119 | 120 | start recording 121 | 122 | `audioprocessCallback`: The onaudioprocess event handler of the ScriptProcessorNode, refer to [MDN](https://developer.mozilla.org/en-US/docs/Web/API/ScriptProcessorNode/onaudioprocess) 123 | 124 | `data`: current frame audio data 125 | 126 | You can do special processing on the audio data of each frame in this callback function 127 | 128 | ```typescript 129 | start (audioprocessCallback?: (data: Float32Array) => any): Promise 130 | ``` 131 | 132 | pause recording 133 | 134 | ```typescript 135 | pause (): void 136 | ``` 137 | 138 | clear recording buffer 139 | 140 | ```typescript 141 | clear (): void 142 | ``` 143 | 144 | get recording data 145 | 146 | Support for exporting WAV, PCM, RAW 147 | 148 | - `encodeTo: ENCODE_TYPE` 149 | 150 | Export format, default to `RAW`. 151 | 152 | - `compressible: boolean` 153 | 154 | Whether to enable compression, default to `false`. 155 | 156 | - **If compression is enabled, the exported WAV, PCM, RAW will be compressed data, and the audio sample rate is the `sampleRate` passed in when the `Recorderx` is instantiated.** 157 | 158 | - **If compression is enabled, the exported WAV, PCM, RAW will be compressed data, and the audio sample rate is the `sampleRate` passed in when the `Recorderx` is instantiated.** 159 | 160 | - **The compression algorithm is based on linear extraction and is distorted at some sample rates.** 161 | 162 | ```typescript 163 | enum ENCODE_TYPE { 164 | RAW = 'raw', 165 | PCM = 'pcm', 166 | WAV = 'wav' 167 | } 168 | 169 | /** 170 | * Get RAW recording data. 171 | */ 172 | getRecord ({ encodeTo, compressible }?: { encodeTo?: ENCODE_TYPE.RAW, compressible?: boolean }): Float32Array 173 | 174 | /** 175 | * Get PCM recording data. 176 | */ 177 | getRecord ({ encodeTo, compressible }?: { encodeTo?: ENCODE_TYPE.PCM, compressible?: boolean }): ArrayBuffer 178 | 179 | /** 180 | * Get WAV recording data. 181 | */ 182 | getRecord ({ encodeTo, compressible }?: { encodeTo?: ENCODE_TYPE.WAV, compressible?: boolean }): Blob 183 | ``` 184 | 185 | ### Audio Tools 186 | 187 | ```javascript 188 | import { audioTools } from "Recorderx"; 189 | 190 | /* 191 | audioTools.merge(); 192 | audioTools.compress(); 193 | audioTools.encodeToPCM(); 194 | audioTools.encodeToWAV(); 195 | */ 196 | ``` 197 | 198 | Merge Float32Array 199 | 200 | ```typescript 201 | function merge(bufferList: Array, length: number): Float32Array; 202 | ``` 203 | 204 | Compress Float32Array 205 | 206 | ```typescript 207 | function compress( 208 | buffer: Float32Array, 209 | inputSampleRate: number, 210 | outputSampleRate: number 211 | ): Float32Array; 212 | ``` 213 | 214 | Convert to PCM 215 | 216 | ```typescript 217 | function encodeToPCM(bytes: Float32Array, sampleBits: number): ArrayBuffer; 218 | ``` 219 | 220 | Convert to WAV 221 | 222 | ```typescript 223 | function encodeToWAV( 224 | bytes: Float32Array, 225 | sampleBits: number, 226 | sampleRate: number 227 | ): Blob; 228 | ``` 229 | 230 | ## Browser Support 231 | 232 | All browsers that implement `getUserMedia`. 233 | 234 | WeChat browser is not supported, only Safari is supported under IOS. 235 | 236 | For details, please refer to [MDN](https://developer.mozilla.org/en-US/docs/Web/API/MediaDevices/getUserMedia) 237 | 238 | ## License 239 | 240 | MIT 241 | 242 | ## Else 243 | 244 | Audio compression and conversion to wav method reference from [recording](https://github.com/silenceboychen/recording.git). 245 | -------------------------------------------------------------------------------- /babel.config.js: -------------------------------------------------------------------------------- 1 | module.exports = function (api) { 2 | const { BABEL_MODULE } = process.env; 3 | 4 | const plugins = ['@babel/plugin-proposal-class-properties']; 5 | 6 | if (BABEL_MODULE !== 'umd') { 7 | plugins.push([ 8 | '@babel/plugin-transform-runtime', 9 | { 10 | corejs: false, 11 | helpers: true, 12 | regenerator: false, 13 | useESModules: true, 14 | }, 15 | ]); 16 | } 17 | 18 | if (api) { 19 | api.cache(false); 20 | } 21 | 22 | return { 23 | presets: [ 24 | '@babel/preset-env', 25 | ], 26 | plugins, 27 | }; 28 | }; 29 | -------------------------------------------------------------------------------- /build/release.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | set -e 4 | 5 | git checkout dev 6 | 7 | git pull 8 | 9 | git checkout master 10 | 11 | git pull 12 | 13 | git merge dev 14 | 15 | echo "Enter release version: " 16 | 17 | read VERSION 18 | 19 | VERSION=`npm version $VERSION --no-git-tag-version` 20 | 21 | echo "release version: "$VERSION 22 | 23 | git add . 24 | 25 | git commit -m "release: $VERSION" 26 | 27 | npm publish 28 | 29 | git tag "$VERSION" 30 | 31 | git push 32 | 33 | git push origin --tags 34 | 35 | npm run gh 36 | 37 | git checkout dev 38 | 39 | git rebase master 40 | 41 | git push 42 | -------------------------------------------------------------------------------- /build/rollup.config.js: -------------------------------------------------------------------------------- 1 | import babel from 'rollup-plugin-babel'; 2 | import html from 'rollup-plugin-fill-html'; 3 | import { uglify } from 'rollup-plugin-uglify'; 4 | import { eslint } from 'rollup-plugin-eslint'; 5 | 6 | const { BABEL_MODULE } = process.env; 7 | 8 | const eslintPlugin = eslint({ 9 | throwOnError: true, 10 | throwOnWarning: false, 11 | include: ['src/**'], 12 | exclude: ['node_modules/**'], 13 | }); 14 | 15 | const config = BABEL_MODULE === 'umd' ? [ 16 | { 17 | input: 'src/index.js', 18 | output: { 19 | file: 'lib/recorderx.min.js', 20 | format: 'umd', 21 | name: 'Recorderx', 22 | exports: 'named', 23 | }, 24 | plugins: [ 25 | eslintPlugin, 26 | babel(), 27 | uglify(), 28 | ], 29 | }, 30 | { 31 | input: 'examples/index.js', 32 | output: { 33 | file: 'dist/demo.min.js', 34 | format: 'umd', 35 | name: 'Recorderx', 36 | exports: 'named', 37 | sourcemap: true, 38 | }, 39 | plugins: [ 40 | eslintPlugin, 41 | babel(), 42 | uglify(), 43 | html({ 44 | template: 'examples/index.html', 45 | filename: 'index.html', 46 | }), 47 | ], 48 | }, 49 | ] : { 50 | input: 'src/index.js', 51 | output: [ 52 | { 53 | file: 'esm/index.js', 54 | format: 'es', 55 | }, 56 | { 57 | file: 'lib/index.js', 58 | format: 'cjs', 59 | exports: 'named', 60 | }, 61 | ], 62 | plugins: [ 63 | eslintPlugin, 64 | babel({ 65 | exclude: 'node_modules/**', 66 | runtimeHelpers: true, 67 | }), 68 | ], 69 | external (id) { 70 | return /@babel\/runtime/.test(id); 71 | }, 72 | }; 73 | 74 | export default config; 75 | -------------------------------------------------------------------------------- /build/rollup.dev.js: -------------------------------------------------------------------------------- 1 | /* eslint-disable import/no-extraneous-dependencies */ 2 | import html from 'rollup-plugin-fill-html'; 3 | import serve from 'rollup-plugin-serve'; 4 | import livereload from 'rollup-plugin-livereload'; 5 | import babel from 'rollup-plugin-babel'; 6 | import { eslint } from 'rollup-plugin-eslint'; 7 | 8 | export default { 9 | input: 'examples/index.js', 10 | output: { 11 | file: 'dist/demo.min.js', 12 | format: 'umd', 13 | name: 'Recorderx', 14 | exports: 'named', 15 | sourcemap: true, 16 | }, 17 | plugins: [ 18 | eslint({ 19 | throwOnError: true, 20 | throwOnWarning: false, 21 | include: ['src/**', 'examples/**'], 22 | exclude: ['node_modules/**'], 23 | }), 24 | babel({ 25 | exclude: 'node_modules/**', 26 | }), 27 | html({ 28 | template: 'examples/index.html', 29 | filename: 'index.html', 30 | }), 31 | serve({ 32 | host: '0.0.0.0', 33 | contentBase: 'dist', 34 | }), 35 | livereload(), 36 | ], 37 | watch: { 38 | exclude: 'node_modules/**', 39 | include: [ 40 | 'src/**', 41 | 'examples/**', 42 | ], 43 | }, 44 | }; 45 | -------------------------------------------------------------------------------- /examples/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | Test your browser 9 | 10 | 11 | 12 | 16 | 17 |
18 | 19 | 20 | 21 |
22 |
23 | 24 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /examples/index.js: -------------------------------------------------------------------------------- 1 | import Recorderx, { RECORDER_STATE, ENCODE_TYPE } from '../src/index'; 2 | 3 | const btnStart = document.getElementById('btn-start'); 4 | const btnPause = document.getElementById('btn-pause'); 5 | const btnClear = document.getElementById('btn-clear'); 6 | const dlog = document.getElementById('log'); 7 | const audio = document.getElementById('audio'); 8 | 9 | function pushLog (log, error = '') { 10 | const xlog = ` 11 | ${(new Date()).toLocaleString()}: 12 | 13 | 14 | ${log} ${error} 15 | `; 16 | const dl = document.createElement('div'); 17 | dl.innerHTML = xlog; 18 | dlog.appendChild(dl); 19 | } 20 | 21 | let rc; 22 | 23 | btnStart.addEventListener('click', () => { 24 | if (!rc) { 25 | rc = new Recorderx({ 26 | recordable: true, 27 | sampleRate: 16000, 28 | }); 29 | } 30 | if (rc.state === RECORDER_STATE.READY) { 31 | rc.start() 32 | .then(() => { 33 | pushLog('start recording'); 34 | }) 35 | .catch((error) => { 36 | pushLog('Recording failed.', error); 37 | }); 38 | } 39 | }); 40 | 41 | btnPause.addEventListener('click', () => { 42 | if (rc && rc.state === RECORDER_STATE.RECORDING) { 43 | rc.pause(); 44 | audio.src = URL.createObjectURL(rc.getRecord({ 45 | encodeTo: ENCODE_TYPE.WAV, 46 | compressible: true, 47 | })); 48 | pushLog('pause recording'); 49 | } 50 | }); 51 | 52 | btnClear.addEventListener('click', () => { 53 | rc.clear(); 54 | }); 55 | -------------------------------------------------------------------------------- /package-lock.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "recorderx", 3 | "version": "2.0.2", 4 | "lockfileVersion": 1, 5 | "requires": true, 6 | "dependencies": { 7 | "@babel/code-frame": { 8 | "version": "7.0.0", 9 | "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.0.0.tgz", 10 | "integrity": "sha512-OfC2uemaknXr87bdLUkWog7nYuliM9Ij5HUcajsVcMCpQrcLmtxRbVFTIqmcSkSeYRBFBRxs2FiUqFJDLdiebA==", 11 | "dev": true, 12 | "requires": { 13 | "@babel/highlight": "^7.0.0" 14 | } 15 | }, 16 | "@babel/compat-data": { 17 | "version": "7.10.1", 18 | "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.10.1.tgz", 19 | "integrity": "sha512-CHvCj7So7iCkGKPRFUfryXIkU2gSBw7VSZFYLsqVhrS47269VK2Hfi9S/YcublPMW8k1u2bQBlbDruoQEm4fgw==", 20 | "dev": true, 21 | "requires": { 22 | "browserslist": "^4.12.0", 23 | "invariant": "^2.2.4", 24 | "semver": "^5.5.0" 25 | } 26 | }, 27 | "@babel/core": { 28 | "version": "7.10.2", 29 | "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.10.2.tgz", 30 | "integrity": "sha512-KQmV9yguEjQsXqyOUGKjS4+3K8/DlOCE2pZcq4augdQmtTy5iv5EHtmMSJ7V4c1BIPjuwtZYqYLCq9Ga+hGBRQ==", 31 | "dev": true, 32 | "requires": { 33 | "@babel/code-frame": "^7.10.1", 34 | "@babel/generator": "^7.10.2", 35 | "@babel/helper-module-transforms": "^7.10.1", 36 | "@babel/helpers": "^7.10.1", 37 | "@babel/parser": "^7.10.2", 38 | "@babel/template": "^7.10.1", 39 | "@babel/traverse": "^7.10.1", 40 | "@babel/types": "^7.10.2", 41 | "convert-source-map": "^1.7.0", 42 | "debug": "^4.1.0", 43 | "gensync": "^1.0.0-beta.1", 44 | "json5": "^2.1.2", 45 | "lodash": "^4.17.13", 46 | "resolve": "^1.3.2", 47 | "semver": "^5.4.1", 48 | "source-map": "^0.5.0" 49 | }, 50 | "dependencies": { 51 | "@babel/code-frame": { 52 | "version": "7.10.1", 53 | "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.10.1.tgz", 54 | "integrity": "sha512-IGhtTmpjGbYzcEDOw7DcQtbQSXcG9ftmAXtWTu9V936vDye4xjjekktFAtgZsWpzTj/X01jocB46mTywm/4SZw==", 55 | "dev": true, 56 | "requires": { 57 | "@babel/highlight": "^7.10.1" 58 | } 59 | }, 60 | "@babel/highlight": { 61 | "version": "7.10.1", 62 | "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.10.1.tgz", 63 | "integrity": "sha512-8rMof+gVP8mxYZApLF/JgNDAkdKa+aJt3ZYxF8z6+j/hpeXL7iMsKCPHa2jNMHu/qqBwzQF4OHNoYi8dMA/rYg==", 64 | "dev": true, 65 | "requires": { 66 | "@babel/helper-validator-identifier": "^7.10.1", 67 | "chalk": "^2.0.0", 68 | "js-tokens": "^4.0.0" 69 | } 70 | } 71 | } 72 | }, 73 | "@babel/generator": { 74 | "version": "7.10.2", 75 | "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.10.2.tgz", 76 | "integrity": "sha512-AxfBNHNu99DTMvlUPlt1h2+Hn7knPpH5ayJ8OqDWSeLld+Fi2AYBTC/IejWDM9Edcii4UzZRCsbUt0WlSDsDsA==", 77 | "dev": true, 78 | "requires": { 79 | "@babel/types": "^7.10.2", 80 | "jsesc": "^2.5.1", 81 | "lodash": "^4.17.13", 82 | "source-map": "^0.5.0" 83 | } 84 | }, 85 | "@babel/helper-annotate-as-pure": { 86 | "version": "7.10.1", 87 | "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.10.1.tgz", 88 | "integrity": "sha512-ewp3rvJEwLaHgyWGe4wQssC2vjks3E80WiUe2BpMb0KhreTjMROCbxXcEovTrbeGVdQct5VjQfrv9EgC+xMzCw==", 89 | "dev": true, 90 | "requires": { 91 | "@babel/types": "^7.10.1" 92 | } 93 | }, 94 | "@babel/helper-builder-binary-assignment-operator-visitor": { 95 | "version": "7.10.1", 96 | "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.10.1.tgz", 97 | "integrity": "sha512-cQpVq48EkYxUU0xozpGCLla3wlkdRRqLWu1ksFMXA9CM5KQmyyRpSEsYXbao7JUkOw/tAaYKCaYyZq6HOFYtyw==", 98 | "dev": true, 99 | "requires": { 100 | "@babel/helper-explode-assignable-expression": "^7.10.1", 101 | "@babel/types": "^7.10.1" 102 | } 103 | }, 104 | "@babel/helper-compilation-targets": { 105 | "version": "7.10.2", 106 | "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.10.2.tgz", 107 | "integrity": "sha512-hYgOhF4To2UTB4LTaZepN/4Pl9LD4gfbJx8A34mqoluT8TLbof1mhUlYuNWTEebONa8+UlCC4X0TEXu7AOUyGA==", 108 | "dev": true, 109 | "requires": { 110 | "@babel/compat-data": "^7.10.1", 111 | "browserslist": "^4.12.0", 112 | "invariant": "^2.2.4", 113 | "levenary": "^1.1.1", 114 | "semver": "^5.5.0" 115 | } 116 | }, 117 | "@babel/helper-create-class-features-plugin": { 118 | "version": "7.10.2", 119 | "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.10.2.tgz", 120 | "integrity": "sha512-5C/QhkGFh1vqcziq1vAL6SI9ymzUp8BCYjFpvYVhWP4DlATIb3u5q3iUd35mvlyGs8fO7hckkW7i0tmH+5+bvQ==", 121 | "dev": true, 122 | "requires": { 123 | "@babel/helper-function-name": "^7.10.1", 124 | "@babel/helper-member-expression-to-functions": "^7.10.1", 125 | "@babel/helper-optimise-call-expression": "^7.10.1", 126 | "@babel/helper-plugin-utils": "^7.10.1", 127 | "@babel/helper-replace-supers": "^7.10.1", 128 | "@babel/helper-split-export-declaration": "^7.10.1" 129 | } 130 | }, 131 | "@babel/helper-create-regexp-features-plugin": { 132 | "version": "7.10.1", 133 | "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.10.1.tgz", 134 | "integrity": "sha512-Rx4rHS0pVuJn5pJOqaqcZR4XSgeF9G/pO/79t+4r7380tXFJdzImFnxMU19f83wjSrmKHq6myrM10pFHTGzkUA==", 135 | "dev": true, 136 | "requires": { 137 | "@babel/helper-annotate-as-pure": "^7.10.1", 138 | "@babel/helper-regex": "^7.10.1", 139 | "regexpu-core": "^4.7.0" 140 | } 141 | }, 142 | "@babel/helper-define-map": { 143 | "version": "7.10.1", 144 | "resolved": "https://registry.npmjs.org/@babel/helper-define-map/-/helper-define-map-7.10.1.tgz", 145 | "integrity": "sha512-+5odWpX+OnvkD0Zmq7panrMuAGQBu6aPUgvMzuMGo4R+jUOvealEj2hiqI6WhxgKrTpFoFj0+VdsuA8KDxHBDg==", 146 | "dev": true, 147 | "requires": { 148 | "@babel/helper-function-name": "^7.10.1", 149 | "@babel/types": "^7.10.1", 150 | "lodash": "^4.17.13" 151 | } 152 | }, 153 | "@babel/helper-explode-assignable-expression": { 154 | "version": "7.10.1", 155 | "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.10.1.tgz", 156 | "integrity": "sha512-vcUJ3cDjLjvkKzt6rHrl767FeE7pMEYfPanq5L16GRtrXIoznc0HykNW2aEYkcnP76P0isoqJ34dDMFZwzEpJg==", 157 | "dev": true, 158 | "requires": { 159 | "@babel/traverse": "^7.10.1", 160 | "@babel/types": "^7.10.1" 161 | } 162 | }, 163 | "@babel/helper-function-name": { 164 | "version": "7.10.1", 165 | "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.10.1.tgz", 166 | "integrity": "sha512-fcpumwhs3YyZ/ttd5Rz0xn0TpIwVkN7X0V38B9TWNfVF42KEkhkAAuPCQ3oXmtTRtiPJrmZ0TrfS0GKF0eMaRQ==", 167 | "dev": true, 168 | "requires": { 169 | "@babel/helper-get-function-arity": "^7.10.1", 170 | "@babel/template": "^7.10.1", 171 | "@babel/types": "^7.10.1" 172 | } 173 | }, 174 | "@babel/helper-get-function-arity": { 175 | "version": "7.10.1", 176 | "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.10.1.tgz", 177 | "integrity": "sha512-F5qdXkYGOQUb0hpRaPoetF9AnsXknKjWMZ+wmsIRsp5ge5sFh4c3h1eH2pRTTuy9KKAA2+TTYomGXAtEL2fQEw==", 178 | "dev": true, 179 | "requires": { 180 | "@babel/types": "^7.10.1" 181 | } 182 | }, 183 | "@babel/helper-hoist-variables": { 184 | "version": "7.10.1", 185 | "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.10.1.tgz", 186 | "integrity": "sha512-vLm5srkU8rI6X3+aQ1rQJyfjvCBLXP8cAGeuw04zeAM2ItKb1e7pmVmLyHb4sDaAYnLL13RHOZPLEtcGZ5xvjg==", 187 | "dev": true, 188 | "requires": { 189 | "@babel/types": "^7.10.1" 190 | } 191 | }, 192 | "@babel/helper-member-expression-to-functions": { 193 | "version": "7.10.1", 194 | "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.10.1.tgz", 195 | "integrity": "sha512-u7XLXeM2n50gb6PWJ9hoO5oO7JFPaZtrh35t8RqKLT1jFKj9IWeD1zrcrYp1q1qiZTdEarfDWfTIP8nGsu0h5g==", 196 | "dev": true, 197 | "requires": { 198 | "@babel/types": "^7.10.1" 199 | } 200 | }, 201 | "@babel/helper-module-imports": { 202 | "version": "7.10.1", 203 | "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.10.1.tgz", 204 | "integrity": "sha512-SFxgwYmZ3HZPyZwJRiVNLRHWuW2OgE5k2nrVs6D9Iv4PPnXVffuEHy83Sfx/l4SqF+5kyJXjAyUmrG7tNm+qVg==", 205 | "dev": true, 206 | "requires": { 207 | "@babel/types": "^7.10.1" 208 | } 209 | }, 210 | "@babel/helper-module-transforms": { 211 | "version": "7.10.1", 212 | "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.10.1.tgz", 213 | "integrity": "sha512-RLHRCAzyJe7Q7sF4oy2cB+kRnU4wDZY/H2xJFGof+M+SJEGhZsb+GFj5j1AD8NiSaVBJ+Pf0/WObiXu/zxWpFg==", 214 | "dev": true, 215 | "requires": { 216 | "@babel/helper-module-imports": "^7.10.1", 217 | "@babel/helper-replace-supers": "^7.10.1", 218 | "@babel/helper-simple-access": "^7.10.1", 219 | "@babel/helper-split-export-declaration": "^7.10.1", 220 | "@babel/template": "^7.10.1", 221 | "@babel/types": "^7.10.1", 222 | "lodash": "^4.17.13" 223 | } 224 | }, 225 | "@babel/helper-optimise-call-expression": { 226 | "version": "7.10.1", 227 | "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.10.1.tgz", 228 | "integrity": "sha512-a0DjNS1prnBsoKx83dP2falChcs7p3i8VMzdrSbfLhuQra/2ENC4sbri34dz/rWmDADsmF1q5GbfaXydh0Jbjg==", 229 | "dev": true, 230 | "requires": { 231 | "@babel/types": "^7.10.1" 232 | } 233 | }, 234 | "@babel/helper-plugin-utils": { 235 | "version": "7.10.1", 236 | "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.10.1.tgz", 237 | "integrity": "sha512-fvoGeXt0bJc7VMWZGCAEBEMo/HAjW2mP8apF5eXK0wSqwLAVHAISCWRoLMBMUs2kqeaG77jltVqu4Hn8Egl3nA==", 238 | "dev": true 239 | }, 240 | "@babel/helper-regex": { 241 | "version": "7.10.1", 242 | "resolved": "https://registry.npmjs.org/@babel/helper-regex/-/helper-regex-7.10.1.tgz", 243 | "integrity": "sha512-7isHr19RsIJWWLLFn21ubFt223PjQyg1HY7CZEMRr820HttHPpVvrsIN3bUOo44DEfFV4kBXO7Abbn9KTUZV7g==", 244 | "dev": true, 245 | "requires": { 246 | "lodash": "^4.17.13" 247 | } 248 | }, 249 | "@babel/helper-remap-async-to-generator": { 250 | "version": "7.10.1", 251 | "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.10.1.tgz", 252 | "integrity": "sha512-RfX1P8HqsfgmJ6CwaXGKMAqbYdlleqglvVtht0HGPMSsy2V6MqLlOJVF/0Qyb/m2ZCi2z3q3+s6Pv7R/dQuZ6A==", 253 | "dev": true, 254 | "requires": { 255 | "@babel/helper-annotate-as-pure": "^7.10.1", 256 | "@babel/helper-wrap-function": "^7.10.1", 257 | "@babel/template": "^7.10.1", 258 | "@babel/traverse": "^7.10.1", 259 | "@babel/types": "^7.10.1" 260 | } 261 | }, 262 | "@babel/helper-replace-supers": { 263 | "version": "7.10.1", 264 | "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.10.1.tgz", 265 | "integrity": "sha512-SOwJzEfpuQwInzzQJGjGaiG578UYmyi2Xw668klPWV5n07B73S0a9btjLk/52Mlcxa+5AdIYqws1KyXRfMoB7A==", 266 | "dev": true, 267 | "requires": { 268 | "@babel/helper-member-expression-to-functions": "^7.10.1", 269 | "@babel/helper-optimise-call-expression": "^7.10.1", 270 | "@babel/traverse": "^7.10.1", 271 | "@babel/types": "^7.10.1" 272 | } 273 | }, 274 | "@babel/helper-simple-access": { 275 | "version": "7.10.1", 276 | "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.10.1.tgz", 277 | "integrity": "sha512-VSWpWzRzn9VtgMJBIWTZ+GP107kZdQ4YplJlCmIrjoLVSi/0upixezHCDG8kpPVTBJpKfxTH01wDhh+jS2zKbw==", 278 | "dev": true, 279 | "requires": { 280 | "@babel/template": "^7.10.1", 281 | "@babel/types": "^7.10.1" 282 | } 283 | }, 284 | "@babel/helper-split-export-declaration": { 285 | "version": "7.10.1", 286 | "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.10.1.tgz", 287 | "integrity": "sha512-UQ1LVBPrYdbchNhLwj6fetj46BcFwfS4NllJo/1aJsT+1dLTEnXJL0qHqtY7gPzF8S2fXBJamf1biAXV3X077g==", 288 | "dev": true, 289 | "requires": { 290 | "@babel/types": "^7.10.1" 291 | } 292 | }, 293 | "@babel/helper-validator-identifier": { 294 | "version": "7.10.1", 295 | "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.1.tgz", 296 | "integrity": "sha512-5vW/JXLALhczRCWP0PnFDMCJAchlBvM7f4uk/jXritBnIa6E1KmqmtrS3yn1LAnxFBypQ3eneLuXjsnfQsgILw==", 297 | "dev": true 298 | }, 299 | "@babel/helper-wrap-function": { 300 | "version": "7.10.1", 301 | "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.10.1.tgz", 302 | "integrity": "sha512-C0MzRGteVDn+H32/ZgbAv5r56f2o1fZSA/rj/TYo8JEJNHg+9BdSmKBUND0shxWRztWhjlT2cvHYuynpPsVJwQ==", 303 | "dev": true, 304 | "requires": { 305 | "@babel/helper-function-name": "^7.10.1", 306 | "@babel/template": "^7.10.1", 307 | "@babel/traverse": "^7.10.1", 308 | "@babel/types": "^7.10.1" 309 | } 310 | }, 311 | "@babel/helpers": { 312 | "version": "7.10.1", 313 | "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.10.1.tgz", 314 | "integrity": "sha512-muQNHF+IdU6wGgkaJyhhEmI54MOZBKsFfsXFhboz1ybwJ1Kl7IHlbm2a++4jwrmY5UYsgitt5lfqo1wMFcHmyw==", 315 | "dev": true, 316 | "requires": { 317 | "@babel/template": "^7.10.1", 318 | "@babel/traverse": "^7.10.1", 319 | "@babel/types": "^7.10.1" 320 | } 321 | }, 322 | "@babel/highlight": { 323 | "version": "7.0.0", 324 | "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.0.0.tgz", 325 | "integrity": "sha512-UFMC4ZeFC48Tpvj7C8UgLvtkaUuovQX+5xNWrsIoMG8o2z+XFKjKaN9iVmS84dPwVN00W4wPmqvYoZF3EGAsfw==", 326 | "dev": true, 327 | "requires": { 328 | "chalk": "^2.0.0", 329 | "esutils": "^2.0.2", 330 | "js-tokens": "^4.0.0" 331 | } 332 | }, 333 | "@babel/parser": { 334 | "version": "7.10.2", 335 | "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.10.2.tgz", 336 | "integrity": "sha512-PApSXlNMJyB4JiGVhCOlzKIif+TKFTvu0aQAhnTvfP/z3vVSN6ZypH5bfUNwFXXjRQtUEBNFd2PtmCmG2Py3qQ==", 337 | "dev": true 338 | }, 339 | "@babel/plugin-proposal-async-generator-functions": { 340 | "version": "7.10.1", 341 | "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.10.1.tgz", 342 | "integrity": "sha512-vzZE12ZTdB336POZjmpblWfNNRpMSua45EYnRigE2XsZxcXcIyly2ixnTJasJE4Zq3U7t2d8rRF7XRUuzHxbOw==", 343 | "dev": true, 344 | "requires": { 345 | "@babel/helper-plugin-utils": "^7.10.1", 346 | "@babel/helper-remap-async-to-generator": "^7.10.1", 347 | "@babel/plugin-syntax-async-generators": "^7.8.0" 348 | } 349 | }, 350 | "@babel/plugin-proposal-class-properties": { 351 | "version": "7.10.1", 352 | "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.10.1.tgz", 353 | "integrity": "sha512-sqdGWgoXlnOdgMXU+9MbhzwFRgxVLeiGBqTrnuS7LC2IBU31wSsESbTUreT2O418obpfPdGUR2GbEufZF1bpqw==", 354 | "dev": true, 355 | "requires": { 356 | "@babel/helper-create-class-features-plugin": "^7.10.1", 357 | "@babel/helper-plugin-utils": "^7.10.1" 358 | } 359 | }, 360 | "@babel/plugin-proposal-dynamic-import": { 361 | "version": "7.10.1", 362 | "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.10.1.tgz", 363 | "integrity": "sha512-Cpc2yUVHTEGPlmiQzXj026kqwjEQAD9I4ZC16uzdbgWgitg/UHKHLffKNCQZ5+y8jpIZPJcKcwsr2HwPh+w3XA==", 364 | "dev": true, 365 | "requires": { 366 | "@babel/helper-plugin-utils": "^7.10.1", 367 | "@babel/plugin-syntax-dynamic-import": "^7.8.0" 368 | } 369 | }, 370 | "@babel/plugin-proposal-json-strings": { 371 | "version": "7.10.1", 372 | "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.10.1.tgz", 373 | "integrity": "sha512-m8r5BmV+ZLpWPtMY2mOKN7wre6HIO4gfIiV+eOmsnZABNenrt/kzYBwrh+KOfgumSWpnlGs5F70J8afYMSJMBg==", 374 | "dev": true, 375 | "requires": { 376 | "@babel/helper-plugin-utils": "^7.10.1", 377 | "@babel/plugin-syntax-json-strings": "^7.8.0" 378 | } 379 | }, 380 | "@babel/plugin-proposal-nullish-coalescing-operator": { 381 | "version": "7.10.1", 382 | "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.10.1.tgz", 383 | "integrity": "sha512-56cI/uHYgL2C8HVuHOuvVowihhX0sxb3nnfVRzUeVHTWmRHTZrKuAh/OBIMggGU/S1g/1D2CRCXqP+3u7vX7iA==", 384 | "dev": true, 385 | "requires": { 386 | "@babel/helper-plugin-utils": "^7.10.1", 387 | "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.0" 388 | } 389 | }, 390 | "@babel/plugin-proposal-numeric-separator": { 391 | "version": "7.10.1", 392 | "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.10.1.tgz", 393 | "integrity": "sha512-jjfym4N9HtCiNfyyLAVD8WqPYeHUrw4ihxuAynWj6zzp2gf9Ey2f7ImhFm6ikB3CLf5Z/zmcJDri6B4+9j9RsA==", 394 | "dev": true, 395 | "requires": { 396 | "@babel/helper-plugin-utils": "^7.10.1", 397 | "@babel/plugin-syntax-numeric-separator": "^7.10.1" 398 | } 399 | }, 400 | "@babel/plugin-proposal-object-rest-spread": { 401 | "version": "7.10.1", 402 | "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.10.1.tgz", 403 | "integrity": "sha512-Z+Qri55KiQkHh7Fc4BW6o+QBuTagbOp9txE+4U1i79u9oWlf2npkiDx+Rf3iK3lbcHBuNy9UOkwuR5wOMH3LIQ==", 404 | "dev": true, 405 | "requires": { 406 | "@babel/helper-plugin-utils": "^7.10.1", 407 | "@babel/plugin-syntax-object-rest-spread": "^7.8.0", 408 | "@babel/plugin-transform-parameters": "^7.10.1" 409 | } 410 | }, 411 | "@babel/plugin-proposal-optional-catch-binding": { 412 | "version": "7.10.1", 413 | "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.10.1.tgz", 414 | "integrity": "sha512-VqExgeE62YBqI3ogkGoOJp1R6u12DFZjqwJhqtKc2o5m1YTUuUWnos7bZQFBhwkxIFpWYJ7uB75U7VAPPiKETA==", 415 | "dev": true, 416 | "requires": { 417 | "@babel/helper-plugin-utils": "^7.10.1", 418 | "@babel/plugin-syntax-optional-catch-binding": "^7.8.0" 419 | } 420 | }, 421 | "@babel/plugin-proposal-optional-chaining": { 422 | "version": "7.10.1", 423 | "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.10.1.tgz", 424 | "integrity": "sha512-dqQj475q8+/avvok72CF3AOSV/SGEcH29zT5hhohqqvvZ2+boQoOr7iGldBG5YXTO2qgCgc2B3WvVLUdbeMlGA==", 425 | "dev": true, 426 | "requires": { 427 | "@babel/helper-plugin-utils": "^7.10.1", 428 | "@babel/plugin-syntax-optional-chaining": "^7.8.0" 429 | } 430 | }, 431 | "@babel/plugin-proposal-private-methods": { 432 | "version": "7.10.1", 433 | "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.10.1.tgz", 434 | "integrity": "sha512-RZecFFJjDiQ2z6maFprLgrdnm0OzoC23Mx89xf1CcEsxmHuzuXOdniEuI+S3v7vjQG4F5sa6YtUp+19sZuSxHg==", 435 | "dev": true, 436 | "requires": { 437 | "@babel/helper-create-class-features-plugin": "^7.10.1", 438 | "@babel/helper-plugin-utils": "^7.10.1" 439 | } 440 | }, 441 | "@babel/plugin-proposal-unicode-property-regex": { 442 | "version": "7.10.1", 443 | "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.10.1.tgz", 444 | "integrity": "sha512-JjfngYRvwmPwmnbRZyNiPFI8zxCZb8euzbCG/LxyKdeTb59tVciKo9GK9bi6JYKInk1H11Dq9j/zRqIH4KigfQ==", 445 | "dev": true, 446 | "requires": { 447 | "@babel/helper-create-regexp-features-plugin": "^7.10.1", 448 | "@babel/helper-plugin-utils": "^7.10.1" 449 | } 450 | }, 451 | "@babel/plugin-syntax-async-generators": { 452 | "version": "7.8.4", 453 | "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", 454 | "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", 455 | "dev": true, 456 | "requires": { 457 | "@babel/helper-plugin-utils": "^7.8.0" 458 | } 459 | }, 460 | "@babel/plugin-syntax-class-properties": { 461 | "version": "7.10.1", 462 | "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.10.1.tgz", 463 | "integrity": "sha512-Gf2Yx/iRs1JREDtVZ56OrjjgFHCaldpTnuy9BHla10qyVT3YkIIGEtoDWhyop0ksu1GvNjHIoYRBqm3zoR1jyQ==", 464 | "dev": true, 465 | "requires": { 466 | "@babel/helper-plugin-utils": "^7.10.1" 467 | } 468 | }, 469 | "@babel/plugin-syntax-dynamic-import": { 470 | "version": "7.8.3", 471 | "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz", 472 | "integrity": "sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==", 473 | "dev": true, 474 | "requires": { 475 | "@babel/helper-plugin-utils": "^7.8.0" 476 | } 477 | }, 478 | "@babel/plugin-syntax-json-strings": { 479 | "version": "7.8.3", 480 | "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", 481 | "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", 482 | "dev": true, 483 | "requires": { 484 | "@babel/helper-plugin-utils": "^7.8.0" 485 | } 486 | }, 487 | "@babel/plugin-syntax-nullish-coalescing-operator": { 488 | "version": "7.8.3", 489 | "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", 490 | "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", 491 | "dev": true, 492 | "requires": { 493 | "@babel/helper-plugin-utils": "^7.8.0" 494 | } 495 | }, 496 | "@babel/plugin-syntax-numeric-separator": { 497 | "version": "7.10.1", 498 | "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.1.tgz", 499 | "integrity": "sha512-uTd0OsHrpe3tH5gRPTxG8Voh99/WCU78vIm5NMRYPAqC8lR4vajt6KkCAknCHrx24vkPdd/05yfdGSB4EIY2mg==", 500 | "dev": true, 501 | "requires": { 502 | "@babel/helper-plugin-utils": "^7.10.1" 503 | } 504 | }, 505 | "@babel/plugin-syntax-object-rest-spread": { 506 | "version": "7.8.3", 507 | "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", 508 | "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", 509 | "dev": true, 510 | "requires": { 511 | "@babel/helper-plugin-utils": "^7.8.0" 512 | } 513 | }, 514 | "@babel/plugin-syntax-optional-catch-binding": { 515 | "version": "7.8.3", 516 | "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", 517 | "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", 518 | "dev": true, 519 | "requires": { 520 | "@babel/helper-plugin-utils": "^7.8.0" 521 | } 522 | }, 523 | "@babel/plugin-syntax-optional-chaining": { 524 | "version": "7.8.3", 525 | "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", 526 | "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", 527 | "dev": true, 528 | "requires": { 529 | "@babel/helper-plugin-utils": "^7.8.0" 530 | } 531 | }, 532 | "@babel/plugin-syntax-top-level-await": { 533 | "version": "7.10.1", 534 | "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.10.1.tgz", 535 | "integrity": "sha512-hgA5RYkmZm8FTFT3yu2N9Bx7yVVOKYT6yEdXXo6j2JTm0wNxgqaGeQVaSHRjhfnQbX91DtjFB6McRFSlcJH3xQ==", 536 | "dev": true, 537 | "requires": { 538 | "@babel/helper-plugin-utils": "^7.10.1" 539 | } 540 | }, 541 | "@babel/plugin-transform-arrow-functions": { 542 | "version": "7.10.1", 543 | "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.10.1.tgz", 544 | "integrity": "sha512-6AZHgFJKP3DJX0eCNJj01RpytUa3SOGawIxweHkNX2L6PYikOZmoh5B0d7hIHaIgveMjX990IAa/xK7jRTN8OA==", 545 | "dev": true, 546 | "requires": { 547 | "@babel/helper-plugin-utils": "^7.10.1" 548 | } 549 | }, 550 | "@babel/plugin-transform-async-to-generator": { 551 | "version": "7.10.1", 552 | "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.10.1.tgz", 553 | "integrity": "sha512-XCgYjJ8TY2slj6SReBUyamJn3k2JLUIiiR5b6t1mNCMSvv7yx+jJpaewakikp0uWFQSF7ChPPoe3dHmXLpISkg==", 554 | "dev": true, 555 | "requires": { 556 | "@babel/helper-module-imports": "^7.10.1", 557 | "@babel/helper-plugin-utils": "^7.10.1", 558 | "@babel/helper-remap-async-to-generator": "^7.10.1" 559 | } 560 | }, 561 | "@babel/plugin-transform-block-scoped-functions": { 562 | "version": "7.10.1", 563 | "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.10.1.tgz", 564 | "integrity": "sha512-B7K15Xp8lv0sOJrdVAoukKlxP9N59HS48V1J3U/JGj+Ad+MHq+am6xJVs85AgXrQn4LV8vaYFOB+pr/yIuzW8Q==", 565 | "dev": true, 566 | "requires": { 567 | "@babel/helper-plugin-utils": "^7.10.1" 568 | } 569 | }, 570 | "@babel/plugin-transform-block-scoping": { 571 | "version": "7.10.1", 572 | "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.10.1.tgz", 573 | "integrity": "sha512-8bpWG6TtF5akdhIm/uWTyjHqENpy13Fx8chg7pFH875aNLwX8JxIxqm08gmAT+Whe6AOmaTeLPe7dpLbXt+xUw==", 574 | "dev": true, 575 | "requires": { 576 | "@babel/helper-plugin-utils": "^7.10.1", 577 | "lodash": "^4.17.13" 578 | } 579 | }, 580 | "@babel/plugin-transform-classes": { 581 | "version": "7.10.1", 582 | "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.10.1.tgz", 583 | "integrity": "sha512-P9V0YIh+ln/B3RStPoXpEQ/CoAxQIhRSUn7aXqQ+FZJ2u8+oCtjIXR3+X0vsSD8zv+mb56K7wZW1XiDTDGiDRQ==", 584 | "dev": true, 585 | "requires": { 586 | "@babel/helper-annotate-as-pure": "^7.10.1", 587 | "@babel/helper-define-map": "^7.10.1", 588 | "@babel/helper-function-name": "^7.10.1", 589 | "@babel/helper-optimise-call-expression": "^7.10.1", 590 | "@babel/helper-plugin-utils": "^7.10.1", 591 | "@babel/helper-replace-supers": "^7.10.1", 592 | "@babel/helper-split-export-declaration": "^7.10.1", 593 | "globals": "^11.1.0" 594 | } 595 | }, 596 | "@babel/plugin-transform-computed-properties": { 597 | "version": "7.10.1", 598 | "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.10.1.tgz", 599 | "integrity": "sha512-mqSrGjp3IefMsXIenBfGcPXxJxweQe2hEIwMQvjtiDQ9b1IBvDUjkAtV/HMXX47/vXf14qDNedXsIiNd1FmkaQ==", 600 | "dev": true, 601 | "requires": { 602 | "@babel/helper-plugin-utils": "^7.10.1" 603 | } 604 | }, 605 | "@babel/plugin-transform-destructuring": { 606 | "version": "7.10.1", 607 | "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.10.1.tgz", 608 | "integrity": "sha512-V/nUc4yGWG71OhaTH705pU8ZSdM6c1KmmLP8ys59oOYbT7RpMYAR3MsVOt6OHL0WzG7BlTU076va9fjJyYzJMA==", 609 | "dev": true, 610 | "requires": { 611 | "@babel/helper-plugin-utils": "^7.10.1" 612 | } 613 | }, 614 | "@babel/plugin-transform-dotall-regex": { 615 | "version": "7.10.1", 616 | "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.10.1.tgz", 617 | "integrity": "sha512-19VIMsD1dp02RvduFUmfzj8uknaO3uiHHF0s3E1OHnVsNj8oge8EQ5RzHRbJjGSetRnkEuBYO7TG1M5kKjGLOA==", 618 | "dev": true, 619 | "requires": { 620 | "@babel/helper-create-regexp-features-plugin": "^7.10.1", 621 | "@babel/helper-plugin-utils": "^7.10.1" 622 | } 623 | }, 624 | "@babel/plugin-transform-duplicate-keys": { 625 | "version": "7.10.1", 626 | "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.10.1.tgz", 627 | "integrity": "sha512-wIEpkX4QvX8Mo9W6XF3EdGttrIPZWozHfEaDTU0WJD/TDnXMvdDh30mzUl/9qWhnf7naicYartcEfUghTCSNpA==", 628 | "dev": true, 629 | "requires": { 630 | "@babel/helper-plugin-utils": "^7.10.1" 631 | } 632 | }, 633 | "@babel/plugin-transform-exponentiation-operator": { 634 | "version": "7.10.1", 635 | "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.10.1.tgz", 636 | "integrity": "sha512-lr/przdAbpEA2BUzRvjXdEDLrArGRRPwbaF9rvayuHRvdQ7lUTTkZnhZrJ4LE2jvgMRFF4f0YuPQ20vhiPYxtA==", 637 | "dev": true, 638 | "requires": { 639 | "@babel/helper-builder-binary-assignment-operator-visitor": "^7.10.1", 640 | "@babel/helper-plugin-utils": "^7.10.1" 641 | } 642 | }, 643 | "@babel/plugin-transform-for-of": { 644 | "version": "7.10.1", 645 | "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.10.1.tgz", 646 | "integrity": "sha512-US8KCuxfQcn0LwSCMWMma8M2R5mAjJGsmoCBVwlMygvmDUMkTCykc84IqN1M7t+agSfOmLYTInLCHJM+RUoz+w==", 647 | "dev": true, 648 | "requires": { 649 | "@babel/helper-plugin-utils": "^7.10.1" 650 | } 651 | }, 652 | "@babel/plugin-transform-function-name": { 653 | "version": "7.10.1", 654 | "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.10.1.tgz", 655 | "integrity": "sha512-//bsKsKFBJfGd65qSNNh1exBy5Y9gD9ZN+DvrJ8f7HXr4avE5POW6zB7Rj6VnqHV33+0vXWUwJT0wSHubiAQkw==", 656 | "dev": true, 657 | "requires": { 658 | "@babel/helper-function-name": "^7.10.1", 659 | "@babel/helper-plugin-utils": "^7.10.1" 660 | } 661 | }, 662 | "@babel/plugin-transform-literals": { 663 | "version": "7.10.1", 664 | "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.10.1.tgz", 665 | "integrity": "sha512-qi0+5qgevz1NHLZroObRm5A+8JJtibb7vdcPQF1KQE12+Y/xxl8coJ+TpPW9iRq+Mhw/NKLjm+5SHtAHCC7lAw==", 666 | "dev": true, 667 | "requires": { 668 | "@babel/helper-plugin-utils": "^7.10.1" 669 | } 670 | }, 671 | "@babel/plugin-transform-member-expression-literals": { 672 | "version": "7.10.1", 673 | "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.10.1.tgz", 674 | "integrity": "sha512-UmaWhDokOFT2GcgU6MkHC11i0NQcL63iqeufXWfRy6pUOGYeCGEKhvfFO6Vz70UfYJYHwveg62GS83Rvpxn+NA==", 675 | "dev": true, 676 | "requires": { 677 | "@babel/helper-plugin-utils": "^7.10.1" 678 | } 679 | }, 680 | "@babel/plugin-transform-modules-amd": { 681 | "version": "7.10.1", 682 | "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.10.1.tgz", 683 | "integrity": "sha512-31+hnWSFRI4/ACFr1qkboBbrTxoBIzj7qA69qlq8HY8p7+YCzkCT6/TvQ1a4B0z27VeWtAeJd6pr5G04dc1iHw==", 684 | "dev": true, 685 | "requires": { 686 | "@babel/helper-module-transforms": "^7.10.1", 687 | "@babel/helper-plugin-utils": "^7.10.1", 688 | "babel-plugin-dynamic-import-node": "^2.3.3" 689 | } 690 | }, 691 | "@babel/plugin-transform-modules-commonjs": { 692 | "version": "7.10.1", 693 | "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.10.1.tgz", 694 | "integrity": "sha512-AQG4fc3KOah0vdITwt7Gi6hD9BtQP/8bhem7OjbaMoRNCH5Djx42O2vYMfau7QnAzQCa+RJnhJBmFFMGpQEzrg==", 695 | "dev": true, 696 | "requires": { 697 | "@babel/helper-module-transforms": "^7.10.1", 698 | "@babel/helper-plugin-utils": "^7.10.1", 699 | "@babel/helper-simple-access": "^7.10.1", 700 | "babel-plugin-dynamic-import-node": "^2.3.3" 701 | } 702 | }, 703 | "@babel/plugin-transform-modules-systemjs": { 704 | "version": "7.10.1", 705 | "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.10.1.tgz", 706 | "integrity": "sha512-ewNKcj1TQZDL3YnO85qh9zo1YF1CHgmSTlRQgHqe63oTrMI85cthKtZjAiZSsSNjPQ5NCaYo5QkbYqEw1ZBgZA==", 707 | "dev": true, 708 | "requires": { 709 | "@babel/helper-hoist-variables": "^7.10.1", 710 | "@babel/helper-module-transforms": "^7.10.1", 711 | "@babel/helper-plugin-utils": "^7.10.1", 712 | "babel-plugin-dynamic-import-node": "^2.3.3" 713 | } 714 | }, 715 | "@babel/plugin-transform-modules-umd": { 716 | "version": "7.10.1", 717 | "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.10.1.tgz", 718 | "integrity": "sha512-EIuiRNMd6GB6ulcYlETnYYfgv4AxqrswghmBRQbWLHZxN4s7mupxzglnHqk9ZiUpDI4eRWewedJJNj67PWOXKA==", 719 | "dev": true, 720 | "requires": { 721 | "@babel/helper-module-transforms": "^7.10.1", 722 | "@babel/helper-plugin-utils": "^7.10.1" 723 | } 724 | }, 725 | "@babel/plugin-transform-named-capturing-groups-regex": { 726 | "version": "7.8.3", 727 | "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.8.3.tgz", 728 | "integrity": "sha512-f+tF/8UVPU86TrCb06JoPWIdDpTNSGGcAtaD9mLP0aYGA0OS0j7j7DHJR0GTFrUZPUU6loZhbsVZgTh0N+Qdnw==", 729 | "dev": true, 730 | "requires": { 731 | "@babel/helper-create-regexp-features-plugin": "^7.8.3" 732 | } 733 | }, 734 | "@babel/plugin-transform-new-target": { 735 | "version": "7.10.1", 736 | "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.10.1.tgz", 737 | "integrity": "sha512-MBlzPc1nJvbmO9rPr1fQwXOM2iGut+JC92ku6PbiJMMK7SnQc1rytgpopveE3Evn47gzvGYeCdgfCDbZo0ecUw==", 738 | "dev": true, 739 | "requires": { 740 | "@babel/helper-plugin-utils": "^7.10.1" 741 | } 742 | }, 743 | "@babel/plugin-transform-object-super": { 744 | "version": "7.10.1", 745 | "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.10.1.tgz", 746 | "integrity": "sha512-WnnStUDN5GL+wGQrJylrnnVlFhFmeArINIR9gjhSeYyvroGhBrSAXYg/RHsnfzmsa+onJrTJrEClPzgNmmQ4Gw==", 747 | "dev": true, 748 | "requires": { 749 | "@babel/helper-plugin-utils": "^7.10.1", 750 | "@babel/helper-replace-supers": "^7.10.1" 751 | } 752 | }, 753 | "@babel/plugin-transform-parameters": { 754 | "version": "7.10.1", 755 | "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.10.1.tgz", 756 | "integrity": "sha512-tJ1T0n6g4dXMsL45YsSzzSDZCxiHXAQp/qHrucOq5gEHncTA3xDxnd5+sZcoQp+N1ZbieAaB8r/VUCG0gqseOg==", 757 | "dev": true, 758 | "requires": { 759 | "@babel/helper-get-function-arity": "^7.10.1", 760 | "@babel/helper-plugin-utils": "^7.10.1" 761 | } 762 | }, 763 | "@babel/plugin-transform-property-literals": { 764 | "version": "7.10.1", 765 | "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.10.1.tgz", 766 | "integrity": "sha512-Kr6+mgag8auNrgEpbfIWzdXYOvqDHZOF0+Bx2xh4H2EDNwcbRb9lY6nkZg8oSjsX+DH9Ebxm9hOqtKW+gRDeNA==", 767 | "dev": true, 768 | "requires": { 769 | "@babel/helper-plugin-utils": "^7.10.1" 770 | } 771 | }, 772 | "@babel/plugin-transform-regenerator": { 773 | "version": "7.10.1", 774 | "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.10.1.tgz", 775 | "integrity": "sha512-B3+Y2prScgJ2Bh/2l9LJxKbb8C8kRfsG4AdPT+n7ixBHIxJaIG8bi8tgjxUMege1+WqSJ+7gu1YeoMVO3gPWzw==", 776 | "dev": true, 777 | "requires": { 778 | "regenerator-transform": "^0.14.2" 779 | } 780 | }, 781 | "@babel/plugin-transform-reserved-words": { 782 | "version": "7.10.1", 783 | "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.10.1.tgz", 784 | "integrity": "sha512-qN1OMoE2nuqSPmpTqEM7OvJ1FkMEV+BjVeZZm9V9mq/x1JLKQ4pcv8riZJMNN3u2AUGl0ouOMjRr2siecvHqUQ==", 785 | "dev": true, 786 | "requires": { 787 | "@babel/helper-plugin-utils": "^7.10.1" 788 | } 789 | }, 790 | "@babel/plugin-transform-runtime": { 791 | "version": "7.10.1", 792 | "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.10.1.tgz", 793 | "integrity": "sha512-4w2tcglDVEwXJ5qxsY++DgWQdNJcCCsPxfT34wCUwIf2E7dI7pMpH8JczkMBbgBTNzBX62SZlNJ9H+De6Zebaw==", 794 | "dev": true, 795 | "requires": { 796 | "@babel/helper-module-imports": "^7.10.1", 797 | "@babel/helper-plugin-utils": "^7.10.1", 798 | "resolve": "^1.8.1", 799 | "semver": "^5.5.1" 800 | } 801 | }, 802 | "@babel/plugin-transform-shorthand-properties": { 803 | "version": "7.10.1", 804 | "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.10.1.tgz", 805 | "integrity": "sha512-AR0E/lZMfLstScFwztApGeyTHJ5u3JUKMjneqRItWeEqDdHWZwAOKycvQNCasCK/3r5YXsuNG25funcJDu7Y2g==", 806 | "dev": true, 807 | "requires": { 808 | "@babel/helper-plugin-utils": "^7.10.1" 809 | } 810 | }, 811 | "@babel/plugin-transform-spread": { 812 | "version": "7.10.1", 813 | "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.10.1.tgz", 814 | "integrity": "sha512-8wTPym6edIrClW8FI2IoaePB91ETOtg36dOkj3bYcNe7aDMN2FXEoUa+WrmPc4xa1u2PQK46fUX2aCb+zo9rfw==", 815 | "dev": true, 816 | "requires": { 817 | "@babel/helper-plugin-utils": "^7.10.1" 818 | } 819 | }, 820 | "@babel/plugin-transform-sticky-regex": { 821 | "version": "7.10.1", 822 | "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.10.1.tgz", 823 | "integrity": "sha512-j17ojftKjrL7ufX8ajKvwRilwqTok4q+BjkknmQw9VNHnItTyMP5anPFzxFJdCQs7clLcWpCV3ma+6qZWLnGMA==", 824 | "dev": true, 825 | "requires": { 826 | "@babel/helper-plugin-utils": "^7.10.1", 827 | "@babel/helper-regex": "^7.10.1" 828 | } 829 | }, 830 | "@babel/plugin-transform-template-literals": { 831 | "version": "7.10.1", 832 | "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.10.1.tgz", 833 | "integrity": "sha512-t7B/3MQf5M1T9hPCRG28DNGZUuxAuDqLYS03rJrIk2prj/UV7Z6FOneijhQhnv/Xa039vidXeVbvjK2SK5f7Gg==", 834 | "dev": true, 835 | "requires": { 836 | "@babel/helper-annotate-as-pure": "^7.10.1", 837 | "@babel/helper-plugin-utils": "^7.10.1" 838 | } 839 | }, 840 | "@babel/plugin-transform-typeof-symbol": { 841 | "version": "7.10.1", 842 | "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.10.1.tgz", 843 | "integrity": "sha512-qX8KZcmbvA23zDi+lk9s6hC1FM7jgLHYIjuLgULgc8QtYnmB3tAVIYkNoKRQ75qWBeyzcoMoK8ZQmogGtC/w0g==", 844 | "dev": true, 845 | "requires": { 846 | "@babel/helper-plugin-utils": "^7.10.1" 847 | } 848 | }, 849 | "@babel/plugin-transform-unicode-escapes": { 850 | "version": "7.10.1", 851 | "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.10.1.tgz", 852 | "integrity": "sha512-zZ0Poh/yy1d4jeDWpx/mNwbKJVwUYJX73q+gyh4bwtG0/iUlzdEu0sLMda8yuDFS6LBQlT/ST1SJAR6zYwXWgw==", 853 | "dev": true, 854 | "requires": { 855 | "@babel/helper-plugin-utils": "^7.10.1" 856 | } 857 | }, 858 | "@babel/plugin-transform-unicode-regex": { 859 | "version": "7.10.1", 860 | "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.10.1.tgz", 861 | "integrity": "sha512-Y/2a2W299k0VIUdbqYm9X2qS6fE0CUBhhiPpimK6byy7OJ/kORLlIX+J6UrjgNu5awvs62k+6RSslxhcvVw2Tw==", 862 | "dev": true, 863 | "requires": { 864 | "@babel/helper-create-regexp-features-plugin": "^7.10.1", 865 | "@babel/helper-plugin-utils": "^7.10.1" 866 | } 867 | }, 868 | "@babel/preset-env": { 869 | "version": "7.10.2", 870 | "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.10.2.tgz", 871 | "integrity": "sha512-MjqhX0RZaEgK/KueRzh+3yPSk30oqDKJ5HP5tqTSB1e2gzGS3PLy7K0BIpnp78+0anFuSwOeuCf1zZO7RzRvEA==", 872 | "dev": true, 873 | "requires": { 874 | "@babel/compat-data": "^7.10.1", 875 | "@babel/helper-compilation-targets": "^7.10.2", 876 | "@babel/helper-module-imports": "^7.10.1", 877 | "@babel/helper-plugin-utils": "^7.10.1", 878 | "@babel/plugin-proposal-async-generator-functions": "^7.10.1", 879 | "@babel/plugin-proposal-class-properties": "^7.10.1", 880 | "@babel/plugin-proposal-dynamic-import": "^7.10.1", 881 | "@babel/plugin-proposal-json-strings": "^7.10.1", 882 | "@babel/plugin-proposal-nullish-coalescing-operator": "^7.10.1", 883 | "@babel/plugin-proposal-numeric-separator": "^7.10.1", 884 | "@babel/plugin-proposal-object-rest-spread": "^7.10.1", 885 | "@babel/plugin-proposal-optional-catch-binding": "^7.10.1", 886 | "@babel/plugin-proposal-optional-chaining": "^7.10.1", 887 | "@babel/plugin-proposal-private-methods": "^7.10.1", 888 | "@babel/plugin-proposal-unicode-property-regex": "^7.10.1", 889 | "@babel/plugin-syntax-async-generators": "^7.8.0", 890 | "@babel/plugin-syntax-class-properties": "^7.10.1", 891 | "@babel/plugin-syntax-dynamic-import": "^7.8.0", 892 | "@babel/plugin-syntax-json-strings": "^7.8.0", 893 | "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.0", 894 | "@babel/plugin-syntax-numeric-separator": "^7.10.1", 895 | "@babel/plugin-syntax-object-rest-spread": "^7.8.0", 896 | "@babel/plugin-syntax-optional-catch-binding": "^7.8.0", 897 | "@babel/plugin-syntax-optional-chaining": "^7.8.0", 898 | "@babel/plugin-syntax-top-level-await": "^7.10.1", 899 | "@babel/plugin-transform-arrow-functions": "^7.10.1", 900 | "@babel/plugin-transform-async-to-generator": "^7.10.1", 901 | "@babel/plugin-transform-block-scoped-functions": "^7.10.1", 902 | "@babel/plugin-transform-block-scoping": "^7.10.1", 903 | "@babel/plugin-transform-classes": "^7.10.1", 904 | "@babel/plugin-transform-computed-properties": "^7.10.1", 905 | "@babel/plugin-transform-destructuring": "^7.10.1", 906 | "@babel/plugin-transform-dotall-regex": "^7.10.1", 907 | "@babel/plugin-transform-duplicate-keys": "^7.10.1", 908 | "@babel/plugin-transform-exponentiation-operator": "^7.10.1", 909 | "@babel/plugin-transform-for-of": "^7.10.1", 910 | "@babel/plugin-transform-function-name": "^7.10.1", 911 | "@babel/plugin-transform-literals": "^7.10.1", 912 | "@babel/plugin-transform-member-expression-literals": "^7.10.1", 913 | "@babel/plugin-transform-modules-amd": "^7.10.1", 914 | "@babel/plugin-transform-modules-commonjs": "^7.10.1", 915 | "@babel/plugin-transform-modules-systemjs": "^7.10.1", 916 | "@babel/plugin-transform-modules-umd": "^7.10.1", 917 | "@babel/plugin-transform-named-capturing-groups-regex": "^7.8.3", 918 | "@babel/plugin-transform-new-target": "^7.10.1", 919 | "@babel/plugin-transform-object-super": "^7.10.1", 920 | "@babel/plugin-transform-parameters": "^7.10.1", 921 | "@babel/plugin-transform-property-literals": "^7.10.1", 922 | "@babel/plugin-transform-regenerator": "^7.10.1", 923 | "@babel/plugin-transform-reserved-words": "^7.10.1", 924 | "@babel/plugin-transform-shorthand-properties": "^7.10.1", 925 | "@babel/plugin-transform-spread": "^7.10.1", 926 | "@babel/plugin-transform-sticky-regex": "^7.10.1", 927 | "@babel/plugin-transform-template-literals": "^7.10.1", 928 | "@babel/plugin-transform-typeof-symbol": "^7.10.1", 929 | "@babel/plugin-transform-unicode-escapes": "^7.10.1", 930 | "@babel/plugin-transform-unicode-regex": "^7.10.1", 931 | "@babel/preset-modules": "^0.1.3", 932 | "@babel/types": "^7.10.2", 933 | "browserslist": "^4.12.0", 934 | "core-js-compat": "^3.6.2", 935 | "invariant": "^2.2.2", 936 | "levenary": "^1.1.1", 937 | "semver": "^5.5.0" 938 | } 939 | }, 940 | "@babel/preset-modules": { 941 | "version": "0.1.3", 942 | "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.3.tgz", 943 | "integrity": "sha512-Ra3JXOHBq2xd56xSF7lMKXdjBn3T772Y1Wet3yWnkDly9zHvJki029tAFzvAAK5cf4YV3yoxuP61crYRol6SVg==", 944 | "dev": true, 945 | "requires": { 946 | "@babel/helper-plugin-utils": "^7.0.0", 947 | "@babel/plugin-proposal-unicode-property-regex": "^7.4.4", 948 | "@babel/plugin-transform-dotall-regex": "^7.4.4", 949 | "@babel/types": "^7.4.4", 950 | "esutils": "^2.0.2" 951 | } 952 | }, 953 | "@babel/runtime": { 954 | "version": "7.10.2", 955 | "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.10.2.tgz", 956 | "integrity": "sha512-6sF3uQw2ivImfVIl62RZ7MXhO2tap69WeWK57vAaimT6AZbE4FbqjdEJIN1UqoD6wI6B+1n9UiagafH1sxjOtg==", 957 | "requires": { 958 | "regenerator-runtime": "^0.13.4" 959 | } 960 | }, 961 | "@babel/template": { 962 | "version": "7.10.1", 963 | "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.10.1.tgz", 964 | "integrity": "sha512-OQDg6SqvFSsc9A0ej6SKINWrpJiNonRIniYondK2ViKhB06i3c0s+76XUft71iqBEe9S1OKsHwPAjfHnuvnCig==", 965 | "dev": true, 966 | "requires": { 967 | "@babel/code-frame": "^7.10.1", 968 | "@babel/parser": "^7.10.1", 969 | "@babel/types": "^7.10.1" 970 | }, 971 | "dependencies": { 972 | "@babel/code-frame": { 973 | "version": "7.10.1", 974 | "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.10.1.tgz", 975 | "integrity": "sha512-IGhtTmpjGbYzcEDOw7DcQtbQSXcG9ftmAXtWTu9V936vDye4xjjekktFAtgZsWpzTj/X01jocB46mTywm/4SZw==", 976 | "dev": true, 977 | "requires": { 978 | "@babel/highlight": "^7.10.1" 979 | } 980 | }, 981 | "@babel/highlight": { 982 | "version": "7.10.1", 983 | "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.10.1.tgz", 984 | "integrity": "sha512-8rMof+gVP8mxYZApLF/JgNDAkdKa+aJt3ZYxF8z6+j/hpeXL7iMsKCPHa2jNMHu/qqBwzQF4OHNoYi8dMA/rYg==", 985 | "dev": true, 986 | "requires": { 987 | "@babel/helper-validator-identifier": "^7.10.1", 988 | "chalk": "^2.0.0", 989 | "js-tokens": "^4.0.0" 990 | } 991 | } 992 | } 993 | }, 994 | "@babel/traverse": { 995 | "version": "7.10.1", 996 | "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.10.1.tgz", 997 | "integrity": "sha512-C/cTuXeKt85K+p08jN6vMDz8vSV0vZcI0wmQ36o6mjbuo++kPMdpOYw23W2XH04dbRt9/nMEfA4W3eR21CD+TQ==", 998 | "dev": true, 999 | "requires": { 1000 | "@babel/code-frame": "^7.10.1", 1001 | "@babel/generator": "^7.10.1", 1002 | "@babel/helper-function-name": "^7.10.1", 1003 | "@babel/helper-split-export-declaration": "^7.10.1", 1004 | "@babel/parser": "^7.10.1", 1005 | "@babel/types": "^7.10.1", 1006 | "debug": "^4.1.0", 1007 | "globals": "^11.1.0", 1008 | "lodash": "^4.17.13" 1009 | }, 1010 | "dependencies": { 1011 | "@babel/code-frame": { 1012 | "version": "7.10.1", 1013 | "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.10.1.tgz", 1014 | "integrity": "sha512-IGhtTmpjGbYzcEDOw7DcQtbQSXcG9ftmAXtWTu9V936vDye4xjjekktFAtgZsWpzTj/X01jocB46mTywm/4SZw==", 1015 | "dev": true, 1016 | "requires": { 1017 | "@babel/highlight": "^7.10.1" 1018 | } 1019 | }, 1020 | "@babel/highlight": { 1021 | "version": "7.10.1", 1022 | "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.10.1.tgz", 1023 | "integrity": "sha512-8rMof+gVP8mxYZApLF/JgNDAkdKa+aJt3ZYxF8z6+j/hpeXL7iMsKCPHa2jNMHu/qqBwzQF4OHNoYi8dMA/rYg==", 1024 | "dev": true, 1025 | "requires": { 1026 | "@babel/helper-validator-identifier": "^7.10.1", 1027 | "chalk": "^2.0.0", 1028 | "js-tokens": "^4.0.0" 1029 | } 1030 | } 1031 | } 1032 | }, 1033 | "@babel/types": { 1034 | "version": "7.10.2", 1035 | "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.10.2.tgz", 1036 | "integrity": "sha512-AD3AwWBSz0AWF0AkCN9VPiWrvldXq+/e3cHa4J89vo4ymjz1XwrBFFVZmkJTsQIPNk+ZVomPSXUJqq8yyjZsng==", 1037 | "dev": true, 1038 | "requires": { 1039 | "@babel/helper-validator-identifier": "^7.10.1", 1040 | "lodash": "^4.17.13", 1041 | "to-fast-properties": "^2.0.0" 1042 | } 1043 | }, 1044 | "@types/estree": { 1045 | "version": "0.0.44", 1046 | "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.44.tgz", 1047 | "integrity": "sha512-iaIVzr+w2ZJ5HkidlZ3EJM8VTZb2MJLCjw3V+505yVts0gRC4UMvjw0d1HPtGqI/HQC/KdsYtayfzl+AXY2R8g==", 1048 | "dev": true 1049 | }, 1050 | "@types/json5": { 1051 | "version": "0.0.29", 1052 | "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz", 1053 | "integrity": "sha1-7ihweulOEdK4J7y+UnC86n8+ce4=", 1054 | "dev": true 1055 | }, 1056 | "@types/node": { 1057 | "version": "11.13.7", 1058 | "resolved": "https://registry.npmjs.org/@types/node/-/node-11.13.7.tgz", 1059 | "integrity": "sha512-suFHr6hcA9mp8vFrZTgrmqW2ZU3mbWsryQtQlY/QvwTISCw7nw/j+bCQPPohqmskhmqa5wLNuMHTTsc+xf1MQg==", 1060 | "dev": true 1061 | }, 1062 | "acorn": { 1063 | "version": "6.4.1", 1064 | "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.4.1.tgz", 1065 | "integrity": "sha512-ZVA9k326Nwrj3Cj9jlh3wGFutC2ZornPNARZwsNYqQYgN0EsV2d53w5RN/co65Ohn4sUAUtb1rSUAOD6XN9idA==", 1066 | "dev": true 1067 | }, 1068 | "acorn-dynamic-import": { 1069 | "version": "4.0.0", 1070 | "resolved": "https://registry.npmjs.org/acorn-dynamic-import/-/acorn-dynamic-import-4.0.0.tgz", 1071 | "integrity": "sha512-d3OEjQV4ROpoflsnUA8HozoIR504TFxNivYEUi6uwz0IYhBkTDXGuWlNdMtybRt3nqVx/L6XqMt0FxkXuWKZhw==", 1072 | "dev": true 1073 | }, 1074 | "acorn-jsx": { 1075 | "version": "5.0.1", 1076 | "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.0.1.tgz", 1077 | "integrity": "sha512-HJ7CfNHrfJLlNTzIEUTj43LNWGkqpRLxm3YjAlcD0ACydk9XynzYsCBHxut+iqt+1aBXkx9UP/w/ZqMr13XIzg==", 1078 | "dev": true 1079 | }, 1080 | "ajv": { 1081 | "version": "6.10.0", 1082 | "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.10.0.tgz", 1083 | "integrity": "sha512-nffhOpkymDECQyR0mnsUtoCE8RlX38G0rYP+wgLWFyZuUyuuojSSvi/+euOiQBIn63whYwYVIIH1TvE3tu4OEg==", 1084 | "dev": true, 1085 | "requires": { 1086 | "fast-deep-equal": "^2.0.1", 1087 | "fast-json-stable-stringify": "^2.0.0", 1088 | "json-schema-traverse": "^0.4.1", 1089 | "uri-js": "^4.2.2" 1090 | } 1091 | }, 1092 | "ansi-escapes": { 1093 | "version": "3.2.0", 1094 | "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.2.0.tgz", 1095 | "integrity": "sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ==", 1096 | "dev": true 1097 | }, 1098 | "ansi-regex": { 1099 | "version": "3.0.0", 1100 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", 1101 | "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", 1102 | "dev": true 1103 | }, 1104 | "ansi-styles": { 1105 | "version": "3.2.1", 1106 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", 1107 | "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", 1108 | "dev": true, 1109 | "requires": { 1110 | "color-convert": "^1.9.0" 1111 | } 1112 | }, 1113 | "anymatch": { 1114 | "version": "3.1.1", 1115 | "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.1.tgz", 1116 | "integrity": "sha512-mM8522psRCqzV+6LhomX5wgp25YVibjh8Wj23I5RPkPppSVSjyKD2A2mBJmWGa+KN7f2D6LNh9jkBCeyLktzjg==", 1117 | "dev": true, 1118 | "requires": { 1119 | "normalize-path": "^3.0.0", 1120 | "picomatch": "^2.0.4" 1121 | } 1122 | }, 1123 | "argparse": { 1124 | "version": "1.0.10", 1125 | "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", 1126 | "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", 1127 | "dev": true, 1128 | "requires": { 1129 | "sprintf-js": "~1.0.2" 1130 | } 1131 | }, 1132 | "array-includes": { 1133 | "version": "3.1.1", 1134 | "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.1.tgz", 1135 | "integrity": "sha512-c2VXaCHl7zPsvpkFsw4nxvFie4fh1ur9bpcgsVkIjqn0H/Xwdg+7fv3n2r/isyS8EBj5b06M9kHyZuIr4El6WQ==", 1136 | "dev": true, 1137 | "requires": { 1138 | "define-properties": "^1.1.3", 1139 | "es-abstract": "^1.17.0", 1140 | "is-string": "^1.0.5" 1141 | } 1142 | }, 1143 | "array-union": { 1144 | "version": "1.0.2", 1145 | "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz", 1146 | "integrity": "sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk=", 1147 | "dev": true, 1148 | "requires": { 1149 | "array-uniq": "^1.0.1" 1150 | } 1151 | }, 1152 | "array-uniq": { 1153 | "version": "1.0.3", 1154 | "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz", 1155 | "integrity": "sha1-r2rId6Jcx/dOBYiUdThY39sk/bY=", 1156 | "dev": true 1157 | }, 1158 | "array.prototype.flat": { 1159 | "version": "1.2.3", 1160 | "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.2.3.tgz", 1161 | "integrity": "sha512-gBlRZV0VSmfPIeWfuuy56XZMvbVfbEUnOXUvt3F/eUUUSyzlgLxhEX4YAEpxNAogRGehPSnfXyPtYyKAhkzQhQ==", 1162 | "dev": true, 1163 | "requires": { 1164 | "define-properties": "^1.1.3", 1165 | "es-abstract": "^1.17.0-next.1" 1166 | } 1167 | }, 1168 | "astral-regex": { 1169 | "version": "1.0.0", 1170 | "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-1.0.0.tgz", 1171 | "integrity": "sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg==", 1172 | "dev": true 1173 | }, 1174 | "async": { 1175 | "version": "2.6.3", 1176 | "resolved": "https://registry.npmjs.org/async/-/async-2.6.3.tgz", 1177 | "integrity": "sha512-zflvls11DCy+dQWzTW2dzuilv8Z5X/pjfmZOWba6TNIVDm+2UDaJmXSOXlasHKfNBs8oo3M0aT50fDEWfKZjXg==", 1178 | "dev": true, 1179 | "requires": { 1180 | "lodash": "^4.17.14" 1181 | } 1182 | }, 1183 | "async-limiter": { 1184 | "version": "1.0.1", 1185 | "resolved": "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.1.tgz", 1186 | "integrity": "sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ==", 1187 | "dev": true 1188 | }, 1189 | "babel-eslint": { 1190 | "version": "10.1.0", 1191 | "resolved": "https://registry.npmjs.org/babel-eslint/-/babel-eslint-10.1.0.tgz", 1192 | "integrity": "sha512-ifWaTHQ0ce+448CYop8AdrQiBsGrnC+bMgfyKFdi6EsPLTAWG+QfyDeM6OH+FmWnKvEq5NnBMLvlBUPKQZoDSg==", 1193 | "dev": true, 1194 | "requires": { 1195 | "@babel/code-frame": "^7.0.0", 1196 | "@babel/parser": "^7.7.0", 1197 | "@babel/traverse": "^7.7.0", 1198 | "@babel/types": "^7.7.0", 1199 | "eslint-visitor-keys": "^1.0.0", 1200 | "resolve": "^1.12.0" 1201 | } 1202 | }, 1203 | "babel-plugin-dynamic-import-node": { 1204 | "version": "2.3.3", 1205 | "resolved": "https://registry.npmjs.org/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.3.tgz", 1206 | "integrity": "sha512-jZVI+s9Zg3IqA/kdi0i6UDCybUI3aSBLnglhYbSSjKlV7yF1F/5LWv8MakQmvYpnbJDS6fcBL2KzHSxNCMtWSQ==", 1207 | "dev": true, 1208 | "requires": { 1209 | "object.assign": "^4.1.0" 1210 | } 1211 | }, 1212 | "balanced-match": { 1213 | "version": "1.0.0", 1214 | "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", 1215 | "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", 1216 | "dev": true 1217 | }, 1218 | "binary-extensions": { 1219 | "version": "2.0.0", 1220 | "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.0.0.tgz", 1221 | "integrity": "sha512-Phlt0plgpIIBOGTT/ehfFnbNlfsDEiqmzE2KRXoX1bLIlir4X/MR+zSyBEkL05ffWgnRSf/DXv+WrUAVr93/ow==", 1222 | "dev": true 1223 | }, 1224 | "boolbase": { 1225 | "version": "1.0.0", 1226 | "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", 1227 | "integrity": "sha1-aN/1++YMUes3cl6p4+0xDcwed24=", 1228 | "dev": true 1229 | }, 1230 | "brace-expansion": { 1231 | "version": "1.1.11", 1232 | "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", 1233 | "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", 1234 | "dev": true, 1235 | "requires": { 1236 | "balanced-match": "^1.0.0", 1237 | "concat-map": "0.0.1" 1238 | } 1239 | }, 1240 | "browserslist": { 1241 | "version": "4.12.0", 1242 | "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.12.0.tgz", 1243 | "integrity": "sha512-UH2GkcEDSI0k/lRkuDSzFl9ZZ87skSy9w2XAn1MsZnL+4c4rqbBd3e82UWHbYDpztABrPBhZsTEeuxVfHppqDg==", 1244 | "dev": true, 1245 | "requires": { 1246 | "caniuse-lite": "^1.0.30001043", 1247 | "electron-to-chromium": "^1.3.413", 1248 | "node-releases": "^1.1.53", 1249 | "pkg-up": "^2.0.0" 1250 | } 1251 | }, 1252 | "buble": { 1253 | "version": "0.19.8", 1254 | "resolved": "https://registry.npmjs.org/buble/-/buble-0.19.8.tgz", 1255 | "integrity": "sha512-IoGZzrUTY5fKXVkgGHw3QeXFMUNBFv+9l8a4QJKG1JhG3nCMHTdEX1DCOg8568E2Q9qvAQIiSokv6Jsgx8p2cA==", 1256 | "dev": true, 1257 | "requires": { 1258 | "acorn": "^6.1.1", 1259 | "acorn-dynamic-import": "^4.0.0", 1260 | "acorn-jsx": "^5.0.1", 1261 | "chalk": "^2.4.2", 1262 | "magic-string": "^0.25.3", 1263 | "minimist": "^1.2.0", 1264 | "os-homedir": "^2.0.0", 1265 | "regexpu-core": "^4.5.4" 1266 | } 1267 | }, 1268 | "callsites": { 1269 | "version": "3.1.0", 1270 | "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", 1271 | "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", 1272 | "dev": true 1273 | }, 1274 | "caniuse-lite": { 1275 | "version": "1.0.30001084", 1276 | "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001084.tgz", 1277 | "integrity": "sha512-ftdc5oGmhEbLUuMZ/Qp3mOpzfZLCxPYKcvGv6v2dJJ+8EdqcvZRbAGOiLmkM/PV1QGta/uwBs8/nCl6sokDW6w==", 1278 | "dev": true 1279 | }, 1280 | "chalk": { 1281 | "version": "2.4.2", 1282 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", 1283 | "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", 1284 | "dev": true, 1285 | "requires": { 1286 | "ansi-styles": "^3.2.1", 1287 | "escape-string-regexp": "^1.0.5", 1288 | "supports-color": "^5.3.0" 1289 | } 1290 | }, 1291 | "chardet": { 1292 | "version": "0.7.0", 1293 | "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz", 1294 | "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==", 1295 | "dev": true 1296 | }, 1297 | "cheerio": { 1298 | "version": "1.0.0-rc.3", 1299 | "resolved": "https://registry.npmjs.org/cheerio/-/cheerio-1.0.0-rc.3.tgz", 1300 | "integrity": "sha512-0td5ijfUPuubwLUu0OBoe98gZj8C/AA+RW3v67GPlGOrvxWjZmBXiBCRU+I8VEiNyJzjth40POfHiz2RB3gImA==", 1301 | "dev": true, 1302 | "requires": { 1303 | "css-select": "~1.2.0", 1304 | "dom-serializer": "~0.1.1", 1305 | "entities": "~1.1.1", 1306 | "htmlparser2": "^3.9.1", 1307 | "lodash": "^4.15.0", 1308 | "parse5": "^3.0.1" 1309 | } 1310 | }, 1311 | "chokidar": { 1312 | "version": "3.4.0", 1313 | "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.4.0.tgz", 1314 | "integrity": "sha512-aXAaho2VJtisB/1fg1+3nlLJqGOuewTzQpd/Tz0yTg2R0e4IGtshYvtjowyEumcBv2z+y4+kc75Mz7j5xJskcQ==", 1315 | "dev": true, 1316 | "requires": { 1317 | "anymatch": "~3.1.1", 1318 | "braces": "~3.0.2", 1319 | "fsevents": "~2.1.2", 1320 | "glob-parent": "~5.1.0", 1321 | "is-binary-path": "~2.1.0", 1322 | "is-glob": "~4.0.1", 1323 | "normalize-path": "~3.0.0", 1324 | "readdirp": "~3.4.0" 1325 | }, 1326 | "dependencies": { 1327 | "braces": { 1328 | "version": "3.0.2", 1329 | "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", 1330 | "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", 1331 | "dev": true, 1332 | "requires": { 1333 | "fill-range": "^7.0.1" 1334 | } 1335 | }, 1336 | "fill-range": { 1337 | "version": "7.0.1", 1338 | "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", 1339 | "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", 1340 | "dev": true, 1341 | "requires": { 1342 | "to-regex-range": "^5.0.1" 1343 | } 1344 | }, 1345 | "is-number": { 1346 | "version": "7.0.0", 1347 | "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", 1348 | "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", 1349 | "dev": true 1350 | }, 1351 | "to-regex-range": { 1352 | "version": "5.0.1", 1353 | "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", 1354 | "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", 1355 | "dev": true, 1356 | "requires": { 1357 | "is-number": "^7.0.0" 1358 | } 1359 | } 1360 | } 1361 | }, 1362 | "cli-cursor": { 1363 | "version": "2.1.0", 1364 | "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz", 1365 | "integrity": "sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU=", 1366 | "dev": true, 1367 | "requires": { 1368 | "restore-cursor": "^2.0.0" 1369 | } 1370 | }, 1371 | "cli-width": { 1372 | "version": "2.2.0", 1373 | "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-2.2.0.tgz", 1374 | "integrity": "sha1-/xnt6Kml5XkyQUewwR8PvLq+1jk=", 1375 | "dev": true 1376 | }, 1377 | "color-convert": { 1378 | "version": "1.9.3", 1379 | "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", 1380 | "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", 1381 | "dev": true, 1382 | "requires": { 1383 | "color-name": "1.1.3" 1384 | } 1385 | }, 1386 | "color-name": { 1387 | "version": "1.1.3", 1388 | "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", 1389 | "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", 1390 | "dev": true 1391 | }, 1392 | "commander": { 1393 | "version": "2.20.3", 1394 | "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", 1395 | "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", 1396 | "dev": true 1397 | }, 1398 | "concat-map": { 1399 | "version": "0.0.1", 1400 | "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", 1401 | "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", 1402 | "dev": true 1403 | }, 1404 | "confusing-browser-globals": { 1405 | "version": "1.0.9", 1406 | "resolved": "https://registry.npmjs.org/confusing-browser-globals/-/confusing-browser-globals-1.0.9.tgz", 1407 | "integrity": "sha512-KbS1Y0jMtyPgIxjO7ZzMAuUpAKMt1SzCL9fsrKsX6b0zJPTaT0SiSPmewwVZg9UAO83HVIlEhZF84LIjZ0lmAw==", 1408 | "dev": true 1409 | }, 1410 | "contains-path": { 1411 | "version": "0.1.0", 1412 | "resolved": "https://registry.npmjs.org/contains-path/-/contains-path-0.1.0.tgz", 1413 | "integrity": "sha1-/ozxhP9mcLa67wGp1IYaXL7EEgo=", 1414 | "dev": true 1415 | }, 1416 | "convert-source-map": { 1417 | "version": "1.7.0", 1418 | "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.7.0.tgz", 1419 | "integrity": "sha512-4FJkXzKXEDB1snCFZlLP4gpC3JILicCpGbzG9f9G7tGqGCzETQ2hWPrcinA9oU4wtf2biUaEH5065UnMeR33oA==", 1420 | "dev": true, 1421 | "requires": { 1422 | "safe-buffer": "~5.1.1" 1423 | } 1424 | }, 1425 | "core-js-compat": { 1426 | "version": "3.6.5", 1427 | "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.6.5.tgz", 1428 | "integrity": "sha512-7ItTKOhOZbznhXAQ2g/slGg1PJV5zDO/WdkTwi7UEOJmkvsE32PWvx6mKtDjiMpjnR2CNf6BAD6sSxIlv7ptng==", 1429 | "dev": true, 1430 | "requires": { 1431 | "browserslist": "^4.8.5", 1432 | "semver": "7.0.0" 1433 | }, 1434 | "dependencies": { 1435 | "semver": { 1436 | "version": "7.0.0", 1437 | "resolved": "https://registry.npmjs.org/semver/-/semver-7.0.0.tgz", 1438 | "integrity": "sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A==", 1439 | "dev": true 1440 | } 1441 | } 1442 | }, 1443 | "cross-spawn": { 1444 | "version": "6.0.5", 1445 | "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", 1446 | "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", 1447 | "dev": true, 1448 | "requires": { 1449 | "nice-try": "^1.0.4", 1450 | "path-key": "^2.0.1", 1451 | "semver": "^5.5.0", 1452 | "shebang-command": "^1.2.0", 1453 | "which": "^1.2.9" 1454 | } 1455 | }, 1456 | "css-select": { 1457 | "version": "1.2.0", 1458 | "resolved": "https://registry.npmjs.org/css-select/-/css-select-1.2.0.tgz", 1459 | "integrity": "sha1-KzoRBTnFNV8c2NMUYj6HCxIeyFg=", 1460 | "dev": true, 1461 | "requires": { 1462 | "boolbase": "~1.0.0", 1463 | "css-what": "2.1", 1464 | "domutils": "1.5.1", 1465 | "nth-check": "~1.0.1" 1466 | } 1467 | }, 1468 | "css-what": { 1469 | "version": "2.1.3", 1470 | "resolved": "https://registry.npmjs.org/css-what/-/css-what-2.1.3.tgz", 1471 | "integrity": "sha512-a+EPoD+uZiNfh+5fxw2nO9QwFa6nJe2Or35fGY6Ipw1R3R4AGz1d1TEZrCegvw2YTmZ0jXirGYlzxxpYSHwpEg==", 1472 | "dev": true 1473 | }, 1474 | "debug": { 1475 | "version": "4.1.1", 1476 | "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", 1477 | "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", 1478 | "dev": true, 1479 | "requires": { 1480 | "ms": "^2.1.1" 1481 | } 1482 | }, 1483 | "deep-is": { 1484 | "version": "0.1.3", 1485 | "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz", 1486 | "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=", 1487 | "dev": true 1488 | }, 1489 | "define-properties": { 1490 | "version": "1.1.3", 1491 | "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", 1492 | "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", 1493 | "dev": true, 1494 | "requires": { 1495 | "object-keys": "^1.0.12" 1496 | } 1497 | }, 1498 | "doctrine": { 1499 | "version": "3.0.0", 1500 | "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", 1501 | "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", 1502 | "dev": true, 1503 | "requires": { 1504 | "esutils": "^2.0.2" 1505 | } 1506 | }, 1507 | "dom-serializer": { 1508 | "version": "0.1.1", 1509 | "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.1.1.tgz", 1510 | "integrity": "sha512-l0IU0pPzLWSHBcieZbpOKgkIn3ts3vAh7ZuFyXNwJxJXk/c4Gwj9xaTJwIDVQCXawWD0qb3IzMGH5rglQaO0XA==", 1511 | "dev": true, 1512 | "requires": { 1513 | "domelementtype": "^1.3.0", 1514 | "entities": "^1.1.1" 1515 | } 1516 | }, 1517 | "domelementtype": { 1518 | "version": "1.3.1", 1519 | "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.1.tgz", 1520 | "integrity": "sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w==", 1521 | "dev": true 1522 | }, 1523 | "domhandler": { 1524 | "version": "2.4.2", 1525 | "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-2.4.2.tgz", 1526 | "integrity": "sha512-JiK04h0Ht5u/80fdLMCEmV4zkNh2BcoMFBmZ/91WtYZ8qVXSKjiw7fXMgFPnHcSZgOo3XdinHvmnDUeMf5R4wA==", 1527 | "dev": true, 1528 | "requires": { 1529 | "domelementtype": "1" 1530 | } 1531 | }, 1532 | "domutils": { 1533 | "version": "1.5.1", 1534 | "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.5.1.tgz", 1535 | "integrity": "sha1-3NhIiib1Y9YQeeSMn3t+Mjc2gs8=", 1536 | "dev": true, 1537 | "requires": { 1538 | "dom-serializer": "0", 1539 | "domelementtype": "1" 1540 | } 1541 | }, 1542 | "electron-to-chromium": { 1543 | "version": "1.3.478", 1544 | "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.478.tgz", 1545 | "integrity": "sha512-pt9GUDD52uEO9ZXWcG4UuW/HwE8T+a8iFP7K2qqWrHB5wUxbbvCIXGBVpQDDQwSR766Nn4AkmLYxOUNd4Ji5Dw==", 1546 | "dev": true 1547 | }, 1548 | "email-addresses": { 1549 | "version": "3.1.0", 1550 | "resolved": "https://registry.npmjs.org/email-addresses/-/email-addresses-3.1.0.tgz", 1551 | "integrity": "sha512-k0/r7GrWVL32kZlGwfPNgB2Y/mMXVTq/decgLczm/j34whdaspNrZO8CnXPf1laaHxI6ptUlsnAxN+UAPw+fzg==", 1552 | "dev": true 1553 | }, 1554 | "emoji-regex": { 1555 | "version": "7.0.3", 1556 | "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", 1557 | "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==", 1558 | "dev": true 1559 | }, 1560 | "entities": { 1561 | "version": "1.1.2", 1562 | "resolved": "https://registry.npmjs.org/entities/-/entities-1.1.2.tgz", 1563 | "integrity": "sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w==", 1564 | "dev": true 1565 | }, 1566 | "error-ex": { 1567 | "version": "1.3.2", 1568 | "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", 1569 | "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", 1570 | "dev": true, 1571 | "requires": { 1572 | "is-arrayish": "^0.2.1" 1573 | } 1574 | }, 1575 | "es-abstract": { 1576 | "version": "1.17.6", 1577 | "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.6.tgz", 1578 | "integrity": "sha512-Fr89bON3WFyUi5EvAeI48QTWX0AyekGgLA8H+c+7fbfCkJwRWRMLd8CQedNEyJuoYYhmtEqY92pgte1FAhBlhw==", 1579 | "dev": true, 1580 | "requires": { 1581 | "es-to-primitive": "^1.2.1", 1582 | "function-bind": "^1.1.1", 1583 | "has": "^1.0.3", 1584 | "has-symbols": "^1.0.1", 1585 | "is-callable": "^1.2.0", 1586 | "is-regex": "^1.1.0", 1587 | "object-inspect": "^1.7.0", 1588 | "object-keys": "^1.1.1", 1589 | "object.assign": "^4.1.0", 1590 | "string.prototype.trimend": "^1.0.1", 1591 | "string.prototype.trimstart": "^1.0.1" 1592 | } 1593 | }, 1594 | "es-to-primitive": { 1595 | "version": "1.2.1", 1596 | "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", 1597 | "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", 1598 | "dev": true, 1599 | "requires": { 1600 | "is-callable": "^1.1.4", 1601 | "is-date-object": "^1.0.1", 1602 | "is-symbol": "^1.0.2" 1603 | } 1604 | }, 1605 | "escape-string-regexp": { 1606 | "version": "1.0.5", 1607 | "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", 1608 | "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", 1609 | "dev": true 1610 | }, 1611 | "eslint": { 1612 | "version": "5.16.0", 1613 | "resolved": "https://registry.npmjs.org/eslint/-/eslint-5.16.0.tgz", 1614 | "integrity": "sha512-S3Rz11i7c8AA5JPv7xAH+dOyq/Cu/VXHiHXBPOU1k/JAM5dXqQPt3qcrhpHSorXmrpu2g0gkIBVXAqCpzfoZIg==", 1615 | "dev": true, 1616 | "requires": { 1617 | "@babel/code-frame": "^7.0.0", 1618 | "ajv": "^6.9.1", 1619 | "chalk": "^2.1.0", 1620 | "cross-spawn": "^6.0.5", 1621 | "debug": "^4.0.1", 1622 | "doctrine": "^3.0.0", 1623 | "eslint-scope": "^4.0.3", 1624 | "eslint-utils": "^1.3.1", 1625 | "eslint-visitor-keys": "^1.0.0", 1626 | "espree": "^5.0.1", 1627 | "esquery": "^1.0.1", 1628 | "esutils": "^2.0.2", 1629 | "file-entry-cache": "^5.0.1", 1630 | "functional-red-black-tree": "^1.0.1", 1631 | "glob": "^7.1.2", 1632 | "globals": "^11.7.0", 1633 | "ignore": "^4.0.6", 1634 | "import-fresh": "^3.0.0", 1635 | "imurmurhash": "^0.1.4", 1636 | "inquirer": "^6.2.2", 1637 | "js-yaml": "^3.13.0", 1638 | "json-stable-stringify-without-jsonify": "^1.0.1", 1639 | "levn": "^0.3.0", 1640 | "lodash": "^4.17.11", 1641 | "minimatch": "^3.0.4", 1642 | "mkdirp": "^0.5.1", 1643 | "natural-compare": "^1.4.0", 1644 | "optionator": "^0.8.2", 1645 | "path-is-inside": "^1.0.2", 1646 | "progress": "^2.0.0", 1647 | "regexpp": "^2.0.1", 1648 | "semver": "^5.5.1", 1649 | "strip-ansi": "^4.0.0", 1650 | "strip-json-comments": "^2.0.1", 1651 | "table": "^5.2.3", 1652 | "text-table": "^0.2.0" 1653 | }, 1654 | "dependencies": { 1655 | "eslint-scope": { 1656 | "version": "4.0.3", 1657 | "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-4.0.3.tgz", 1658 | "integrity": "sha512-p7VutNr1O/QrxysMo3E45FjYDTeXBy0iTltPFNSqKAIfjDSXC+4dj+qfyuD8bfAXrW/y6lW3O76VaYNPKfpKrg==", 1659 | "dev": true, 1660 | "requires": { 1661 | "esrecurse": "^4.1.0", 1662 | "estraverse": "^4.1.1" 1663 | } 1664 | } 1665 | } 1666 | }, 1667 | "eslint-config-airbnb-base": { 1668 | "version": "13.2.0", 1669 | "resolved": "https://registry.npmjs.org/eslint-config-airbnb-base/-/eslint-config-airbnb-base-13.2.0.tgz", 1670 | "integrity": "sha512-1mg/7eoB4AUeB0X1c/ho4vb2gYkNH8Trr/EgCT/aGmKhhG+F6vF5s8+iRBlWAzFIAphxIdp3YfEKgEl0f9Xg+w==", 1671 | "dev": true, 1672 | "requires": { 1673 | "confusing-browser-globals": "^1.0.5", 1674 | "object.assign": "^4.1.0", 1675 | "object.entries": "^1.1.0" 1676 | } 1677 | }, 1678 | "eslint-import-resolver-node": { 1679 | "version": "0.3.4", 1680 | "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.4.tgz", 1681 | "integrity": "sha512-ogtf+5AB/O+nM6DIeBUNr2fuT7ot9Qg/1harBfBtaP13ekEWFQEEMP94BCB7zaNW3gyY+8SHYF00rnqYwXKWOA==", 1682 | "dev": true, 1683 | "requires": { 1684 | "debug": "^2.6.9", 1685 | "resolve": "^1.13.1" 1686 | }, 1687 | "dependencies": { 1688 | "debug": { 1689 | "version": "2.6.9", 1690 | "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", 1691 | "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", 1692 | "dev": true, 1693 | "requires": { 1694 | "ms": "2.0.0" 1695 | } 1696 | }, 1697 | "ms": { 1698 | "version": "2.0.0", 1699 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", 1700 | "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", 1701 | "dev": true 1702 | } 1703 | } 1704 | }, 1705 | "eslint-module-utils": { 1706 | "version": "2.6.0", 1707 | "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.6.0.tgz", 1708 | "integrity": "sha512-6j9xxegbqe8/kZY8cYpcp0xhbK0EgJlg3g9mib3/miLaExuuwc3n5UEfSnU6hWMbT0FAYVvDbL9RrRgpUeQIvA==", 1709 | "dev": true, 1710 | "requires": { 1711 | "debug": "^2.6.9", 1712 | "pkg-dir": "^2.0.0" 1713 | }, 1714 | "dependencies": { 1715 | "debug": { 1716 | "version": "2.6.9", 1717 | "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", 1718 | "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", 1719 | "dev": true, 1720 | "requires": { 1721 | "ms": "2.0.0" 1722 | } 1723 | }, 1724 | "ms": { 1725 | "version": "2.0.0", 1726 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", 1727 | "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", 1728 | "dev": true 1729 | } 1730 | } 1731 | }, 1732 | "eslint-plugin-import": { 1733 | "version": "2.21.2", 1734 | "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.21.2.tgz", 1735 | "integrity": "sha512-FEmxeGI6yaz+SnEB6YgNHlQK1Bs2DKLM+YF+vuTk5H8J9CLbJLtlPvRFgZZ2+sXiKAlN5dpdlrWOjK8ZoZJpQA==", 1736 | "dev": true, 1737 | "requires": { 1738 | "array-includes": "^3.1.1", 1739 | "array.prototype.flat": "^1.2.3", 1740 | "contains-path": "^0.1.0", 1741 | "debug": "^2.6.9", 1742 | "doctrine": "1.5.0", 1743 | "eslint-import-resolver-node": "^0.3.3", 1744 | "eslint-module-utils": "^2.6.0", 1745 | "has": "^1.0.3", 1746 | "minimatch": "^3.0.4", 1747 | "object.values": "^1.1.1", 1748 | "read-pkg-up": "^2.0.0", 1749 | "resolve": "^1.17.0", 1750 | "tsconfig-paths": "^3.9.0" 1751 | }, 1752 | "dependencies": { 1753 | "debug": { 1754 | "version": "2.6.9", 1755 | "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", 1756 | "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", 1757 | "dev": true, 1758 | "requires": { 1759 | "ms": "2.0.0" 1760 | } 1761 | }, 1762 | "doctrine": { 1763 | "version": "1.5.0", 1764 | "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-1.5.0.tgz", 1765 | "integrity": "sha1-N53Ocw9hZvds76TmcHoVmwLFpvo=", 1766 | "dev": true, 1767 | "requires": { 1768 | "esutils": "^2.0.2", 1769 | "isarray": "^1.0.0" 1770 | } 1771 | }, 1772 | "ms": { 1773 | "version": "2.0.0", 1774 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", 1775 | "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", 1776 | "dev": true 1777 | } 1778 | } 1779 | }, 1780 | "eslint-utils": { 1781 | "version": "1.4.3", 1782 | "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-1.4.3.tgz", 1783 | "integrity": "sha512-fbBN5W2xdY45KulGXmLHZ3c3FHfVYmKg0IrAKGOkT/464PQsx2UeIzfz1RmEci+KLm1bBaAzZAh8+/E+XAeZ8Q==", 1784 | "dev": true, 1785 | "requires": { 1786 | "eslint-visitor-keys": "^1.1.0" 1787 | }, 1788 | "dependencies": { 1789 | "eslint-visitor-keys": { 1790 | "version": "1.3.0", 1791 | "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", 1792 | "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", 1793 | "dev": true 1794 | } 1795 | } 1796 | }, 1797 | "eslint-visitor-keys": { 1798 | "version": "1.0.0", 1799 | "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.0.0.tgz", 1800 | "integrity": "sha512-qzm/XxIbxm/FHyH341ZrbnMUpe+5Bocte9xkmFMzPMjRaZMcXww+MpBptFvtU+79L362nqiLhekCxCxDPaUMBQ==", 1801 | "dev": true 1802 | }, 1803 | "espree": { 1804 | "version": "5.0.1", 1805 | "resolved": "https://registry.npmjs.org/espree/-/espree-5.0.1.tgz", 1806 | "integrity": "sha512-qWAZcWh4XE/RwzLJejfcofscgMc9CamR6Tn1+XRXNzrvUSSbiAjGOI/fggztjIi7y9VLPqnICMIPiGyr8JaZ0A==", 1807 | "dev": true, 1808 | "requires": { 1809 | "acorn": "^6.0.7", 1810 | "acorn-jsx": "^5.0.0", 1811 | "eslint-visitor-keys": "^1.0.0" 1812 | } 1813 | }, 1814 | "esprima": { 1815 | "version": "4.0.1", 1816 | "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", 1817 | "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", 1818 | "dev": true 1819 | }, 1820 | "esquery": { 1821 | "version": "1.0.1", 1822 | "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.0.1.tgz", 1823 | "integrity": "sha512-SmiyZ5zIWH9VM+SRUReLS5Q8a7GxtRdxEBVZpm98rJM7Sb+A9DVCndXfkeFUd3byderg+EbDkfnevfCwynWaNA==", 1824 | "dev": true, 1825 | "requires": { 1826 | "estraverse": "^4.0.0" 1827 | } 1828 | }, 1829 | "esrecurse": { 1830 | "version": "4.2.1", 1831 | "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.2.1.tgz", 1832 | "integrity": "sha512-64RBB++fIOAXPw3P9cy89qfMlvZEXZkqqJkjqqXIvzP5ezRZjW+lPWjw35UX/3EhUPFYbg5ER4JYgDw4007/DQ==", 1833 | "dev": true, 1834 | "requires": { 1835 | "estraverse": "^4.1.0" 1836 | } 1837 | }, 1838 | "estraverse": { 1839 | "version": "4.2.0", 1840 | "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.2.0.tgz", 1841 | "integrity": "sha1-De4/7TH81GlhjOc0IJn8GvoL2xM=", 1842 | "dev": true 1843 | }, 1844 | "estree-walker": { 1845 | "version": "0.6.1", 1846 | "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-0.6.1.tgz", 1847 | "integrity": "sha512-SqmZANLWS0mnatqbSfRP5g8OXZC12Fgg1IwNtLsyHDzJizORW4khDfjPqJZsemPWBB2uqykUah5YpQ6epsqC/w==", 1848 | "dev": true 1849 | }, 1850 | "esutils": { 1851 | "version": "2.0.2", 1852 | "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz", 1853 | "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=", 1854 | "dev": true 1855 | }, 1856 | "external-editor": { 1857 | "version": "3.0.3", 1858 | "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.0.3.tgz", 1859 | "integrity": "sha512-bn71H9+qWoOQKyZDo25mOMVpSmXROAsTJVVVYzrrtol3d4y+AsKjf4Iwl2Q+IuT0kFSQ1qo166UuIwqYq7mGnA==", 1860 | "dev": true, 1861 | "requires": { 1862 | "chardet": "^0.7.0", 1863 | "iconv-lite": "^0.4.24", 1864 | "tmp": "^0.0.33" 1865 | } 1866 | }, 1867 | "fast-deep-equal": { 1868 | "version": "2.0.1", 1869 | "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz", 1870 | "integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=", 1871 | "dev": true 1872 | }, 1873 | "fast-json-stable-stringify": { 1874 | "version": "2.0.0", 1875 | "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz", 1876 | "integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I=", 1877 | "dev": true 1878 | }, 1879 | "fast-levenshtein": { 1880 | "version": "2.0.6", 1881 | "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", 1882 | "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=", 1883 | "dev": true 1884 | }, 1885 | "figures": { 1886 | "version": "2.0.0", 1887 | "resolved": "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz", 1888 | "integrity": "sha1-OrGi0qYsi/tDGgyUy3l6L84nyWI=", 1889 | "dev": true, 1890 | "requires": { 1891 | "escape-string-regexp": "^1.0.5" 1892 | } 1893 | }, 1894 | "file-entry-cache": { 1895 | "version": "5.0.1", 1896 | "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-5.0.1.tgz", 1897 | "integrity": "sha512-bCg29ictuBaKUwwArK4ouCaqDgLZcysCFLmM/Yn/FDoqndh/9vNuQfXRDvTuXKLxfD/JtZQGKFT8MGcJBK644g==", 1898 | "dev": true, 1899 | "requires": { 1900 | "flat-cache": "^2.0.1" 1901 | } 1902 | }, 1903 | "filename-reserved-regex": { 1904 | "version": "1.0.0", 1905 | "resolved": "https://registry.npmjs.org/filename-reserved-regex/-/filename-reserved-regex-1.0.0.tgz", 1906 | "integrity": "sha1-5hz4BfDeHJhFZ9A4bcXfUO5a9+Q=", 1907 | "dev": true 1908 | }, 1909 | "filenamify": { 1910 | "version": "1.2.1", 1911 | "resolved": "https://registry.npmjs.org/filenamify/-/filenamify-1.2.1.tgz", 1912 | "integrity": "sha1-qfL/0RxQO+0wABUCknI3jx8TZaU=", 1913 | "dev": true, 1914 | "requires": { 1915 | "filename-reserved-regex": "^1.0.0", 1916 | "strip-outer": "^1.0.0", 1917 | "trim-repeated": "^1.0.0" 1918 | } 1919 | }, 1920 | "filenamify-url": { 1921 | "version": "1.0.0", 1922 | "resolved": "https://registry.npmjs.org/filenamify-url/-/filenamify-url-1.0.0.tgz", 1923 | "integrity": "sha1-syvYExnvWGO3MHi+1Q9GpPeXX1A=", 1924 | "dev": true, 1925 | "requires": { 1926 | "filenamify": "^1.0.0", 1927 | "humanize-url": "^1.0.0" 1928 | } 1929 | }, 1930 | "find-up": { 1931 | "version": "2.1.0", 1932 | "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", 1933 | "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", 1934 | "dev": true, 1935 | "requires": { 1936 | "locate-path": "^2.0.0" 1937 | } 1938 | }, 1939 | "flat-cache": { 1940 | "version": "2.0.1", 1941 | "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-2.0.1.tgz", 1942 | "integrity": "sha512-LoQe6yDuUMDzQAEH8sgmh4Md6oZnc/7PjtwjNFSzveXqSHt6ka9fPBuso7IGf9Rz4uqnSnWiFH2B/zj24a5ReA==", 1943 | "dev": true, 1944 | "requires": { 1945 | "flatted": "^2.0.0", 1946 | "rimraf": "2.6.3", 1947 | "write": "1.0.3" 1948 | } 1949 | }, 1950 | "flatted": { 1951 | "version": "2.0.0", 1952 | "resolved": "https://registry.npmjs.org/flatted/-/flatted-2.0.0.tgz", 1953 | "integrity": "sha512-R+H8IZclI8AAkSBRQJLVOsxwAoHd6WC40b4QTNWIjzAa6BXOBfQcM587MXDTVPeYaopFNWHUFLx7eNmHDSxMWg==", 1954 | "dev": true 1955 | }, 1956 | "fs-extra": { 1957 | "version": "8.1.0", 1958 | "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", 1959 | "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", 1960 | "dev": true, 1961 | "requires": { 1962 | "graceful-fs": "^4.2.0", 1963 | "jsonfile": "^4.0.0", 1964 | "universalify": "^0.1.0" 1965 | } 1966 | }, 1967 | "fs.realpath": { 1968 | "version": "1.0.0", 1969 | "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", 1970 | "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", 1971 | "dev": true 1972 | }, 1973 | "fsevents": { 1974 | "version": "2.1.3", 1975 | "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.1.3.tgz", 1976 | "integrity": "sha512-Auw9a4AxqWpa9GUfj370BMPzzyncfBABW8Mab7BGWBYDj4Isgq+cDKtx0i6u9jcX9pQDnswsaaOTgTmA5pEjuQ==", 1977 | "dev": true, 1978 | "optional": true 1979 | }, 1980 | "function-bind": { 1981 | "version": "1.1.1", 1982 | "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", 1983 | "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", 1984 | "dev": true 1985 | }, 1986 | "functional-red-black-tree": { 1987 | "version": "1.0.1", 1988 | "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", 1989 | "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=", 1990 | "dev": true 1991 | }, 1992 | "gensync": { 1993 | "version": "1.0.0-beta.1", 1994 | "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.1.tgz", 1995 | "integrity": "sha512-r8EC6NO1sngH/zdD9fiRDLdcgnbayXah+mLgManTaIZJqEC1MZstmnox8KpnI2/fxQwrp5OpCOYWLp4rBl4Jcg==", 1996 | "dev": true 1997 | }, 1998 | "gh-pages": { 1999 | "version": "2.2.0", 2000 | "resolved": "https://registry.npmjs.org/gh-pages/-/gh-pages-2.2.0.tgz", 2001 | "integrity": "sha512-c+yPkNOPMFGNisYg9r4qvsMIjVYikJv7ImFOhPIVPt0+AcRUamZ7zkGRLHz7FKB0xrlZ+ddSOJsZv9XAFVXLmA==", 2002 | "dev": true, 2003 | "requires": { 2004 | "async": "^2.6.1", 2005 | "commander": "^2.18.0", 2006 | "email-addresses": "^3.0.1", 2007 | "filenamify-url": "^1.0.0", 2008 | "fs-extra": "^8.1.0", 2009 | "globby": "^6.1.0" 2010 | } 2011 | }, 2012 | "glob": { 2013 | "version": "7.1.3", 2014 | "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.3.tgz", 2015 | "integrity": "sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ==", 2016 | "dev": true, 2017 | "requires": { 2018 | "fs.realpath": "^1.0.0", 2019 | "inflight": "^1.0.4", 2020 | "inherits": "2", 2021 | "minimatch": "^3.0.4", 2022 | "once": "^1.3.0", 2023 | "path-is-absolute": "^1.0.0" 2024 | } 2025 | }, 2026 | "glob-parent": { 2027 | "version": "5.1.1", 2028 | "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.1.tgz", 2029 | "integrity": "sha512-FnI+VGOpnlGHWZxthPGR+QhR78fuiK0sNLkHQv+bL9fQi57lNNdquIbna/WrfROrolq8GK5Ek6BiMwqL/voRYQ==", 2030 | "dev": true, 2031 | "requires": { 2032 | "is-glob": "^4.0.1" 2033 | } 2034 | }, 2035 | "globals": { 2036 | "version": "11.11.0", 2037 | "resolved": "https://registry.npmjs.org/globals/-/globals-11.11.0.tgz", 2038 | "integrity": "sha512-WHq43gS+6ufNOEqlrDBxVEbb8ntfXrfAUU2ZOpCxrBdGKW3gyv8mCxAfIBD0DroPKGrJ2eSsXsLtY9MPntsyTw==", 2039 | "dev": true 2040 | }, 2041 | "globby": { 2042 | "version": "6.1.0", 2043 | "resolved": "https://registry.npmjs.org/globby/-/globby-6.1.0.tgz", 2044 | "integrity": "sha1-9abXDoOV4hyFj7BInWTfAkJNUGw=", 2045 | "dev": true, 2046 | "requires": { 2047 | "array-union": "^1.0.1", 2048 | "glob": "^7.0.3", 2049 | "object-assign": "^4.0.1", 2050 | "pify": "^2.0.0", 2051 | "pinkie-promise": "^2.0.0" 2052 | } 2053 | }, 2054 | "graceful-fs": { 2055 | "version": "4.2.4", 2056 | "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.4.tgz", 2057 | "integrity": "sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw==", 2058 | "dev": true 2059 | }, 2060 | "has": { 2061 | "version": "1.0.3", 2062 | "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", 2063 | "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", 2064 | "dev": true, 2065 | "requires": { 2066 | "function-bind": "^1.1.1" 2067 | } 2068 | }, 2069 | "has-flag": { 2070 | "version": "3.0.0", 2071 | "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", 2072 | "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", 2073 | "dev": true 2074 | }, 2075 | "has-symbols": { 2076 | "version": "1.0.1", 2077 | "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.1.tgz", 2078 | "integrity": "sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg==", 2079 | "dev": true 2080 | }, 2081 | "hasha": { 2082 | "version": "3.0.0", 2083 | "resolved": "https://registry.npmjs.org/hasha/-/hasha-3.0.0.tgz", 2084 | "integrity": "sha1-UqMvq4Vp1BymmmH/GiFPjrfIvTk=", 2085 | "dev": true, 2086 | "requires": { 2087 | "is-stream": "^1.0.1" 2088 | } 2089 | }, 2090 | "hosted-git-info": { 2091 | "version": "2.8.8", 2092 | "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.8.tgz", 2093 | "integrity": "sha512-f/wzC2QaWBs7t9IYqB4T3sR1xviIViXJRJTWBlx2Gf3g0Xi5vI7Yy4koXQ1c9OYDGHN9sBy1DQ2AB8fqZBWhUg==", 2094 | "dev": true 2095 | }, 2096 | "htmlparser2": { 2097 | "version": "3.10.1", 2098 | "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.10.1.tgz", 2099 | "integrity": "sha512-IgieNijUMbkDovyoKObU1DUhm1iwNYE/fuifEoEHfd1oZKZDaONBSkal7Y01shxsM49R4XaMdGez3WnF9UfiCQ==", 2100 | "dev": true, 2101 | "requires": { 2102 | "domelementtype": "^1.3.1", 2103 | "domhandler": "^2.3.0", 2104 | "domutils": "^1.5.1", 2105 | "entities": "^1.1.1", 2106 | "inherits": "^2.0.1", 2107 | "readable-stream": "^3.1.1" 2108 | } 2109 | }, 2110 | "humanize-url": { 2111 | "version": "1.0.1", 2112 | "resolved": "https://registry.npmjs.org/humanize-url/-/humanize-url-1.0.1.tgz", 2113 | "integrity": "sha1-9KuZ4NKIF0yk4eUEB8VfuuRk7/8=", 2114 | "dev": true, 2115 | "requires": { 2116 | "normalize-url": "^1.0.0", 2117 | "strip-url-auth": "^1.0.0" 2118 | } 2119 | }, 2120 | "iconv-lite": { 2121 | "version": "0.4.24", 2122 | "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", 2123 | "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", 2124 | "dev": true, 2125 | "requires": { 2126 | "safer-buffer": ">= 2.1.2 < 3" 2127 | } 2128 | }, 2129 | "ignore": { 2130 | "version": "4.0.6", 2131 | "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", 2132 | "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", 2133 | "dev": true 2134 | }, 2135 | "import-fresh": { 2136 | "version": "3.0.0", 2137 | "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.0.0.tgz", 2138 | "integrity": "sha512-pOnA9tfM3Uwics+SaBLCNyZZZbK+4PTu0OPZtLlMIrv17EdBoC15S9Kn8ckJ9TZTyKb3ywNE5y1yeDxxGA7nTQ==", 2139 | "dev": true, 2140 | "requires": { 2141 | "parent-module": "^1.0.0", 2142 | "resolve-from": "^4.0.0" 2143 | } 2144 | }, 2145 | "imurmurhash": { 2146 | "version": "0.1.4", 2147 | "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", 2148 | "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", 2149 | "dev": true 2150 | }, 2151 | "inflight": { 2152 | "version": "1.0.6", 2153 | "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", 2154 | "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", 2155 | "dev": true, 2156 | "requires": { 2157 | "once": "^1.3.0", 2158 | "wrappy": "1" 2159 | } 2160 | }, 2161 | "inherits": { 2162 | "version": "2.0.3", 2163 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", 2164 | "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", 2165 | "dev": true 2166 | }, 2167 | "inquirer": { 2168 | "version": "6.3.1", 2169 | "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-6.3.1.tgz", 2170 | "integrity": "sha512-MmL624rfkFt4TG9y/Jvmt8vdmOo836U7Y0Hxr2aFk3RelZEGX4Igk0KabWrcaaZaTv9uzglOqWh1Vly+FAWAXA==", 2171 | "dev": true, 2172 | "requires": { 2173 | "ansi-escapes": "^3.2.0", 2174 | "chalk": "^2.4.2", 2175 | "cli-cursor": "^2.1.0", 2176 | "cli-width": "^2.0.0", 2177 | "external-editor": "^3.0.3", 2178 | "figures": "^2.0.0", 2179 | "lodash": "^4.17.11", 2180 | "mute-stream": "0.0.7", 2181 | "run-async": "^2.2.0", 2182 | "rxjs": "^6.4.0", 2183 | "string-width": "^2.1.0", 2184 | "strip-ansi": "^5.1.0", 2185 | "through": "^2.3.6" 2186 | }, 2187 | "dependencies": { 2188 | "ansi-regex": { 2189 | "version": "4.1.0", 2190 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", 2191 | "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", 2192 | "dev": true 2193 | }, 2194 | "strip-ansi": { 2195 | "version": "5.2.0", 2196 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", 2197 | "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", 2198 | "dev": true, 2199 | "requires": { 2200 | "ansi-regex": "^4.1.0" 2201 | } 2202 | } 2203 | } 2204 | }, 2205 | "invariant": { 2206 | "version": "2.2.4", 2207 | "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz", 2208 | "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==", 2209 | "dev": true, 2210 | "requires": { 2211 | "loose-envify": "^1.0.0" 2212 | } 2213 | }, 2214 | "is-arrayish": { 2215 | "version": "0.2.1", 2216 | "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", 2217 | "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", 2218 | "dev": true 2219 | }, 2220 | "is-binary-path": { 2221 | "version": "2.1.0", 2222 | "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", 2223 | "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", 2224 | "dev": true, 2225 | "requires": { 2226 | "binary-extensions": "^2.0.0" 2227 | } 2228 | }, 2229 | "is-callable": { 2230 | "version": "1.2.0", 2231 | "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.0.tgz", 2232 | "integrity": "sha512-pyVD9AaGLxtg6srb2Ng6ynWJqkHU9bEM087AKck0w8QwDarTfNcpIYoU8x8Hv2Icm8u6kFJM18Dag8lyqGkviw==", 2233 | "dev": true 2234 | }, 2235 | "is-date-object": { 2236 | "version": "1.0.2", 2237 | "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.2.tgz", 2238 | "integrity": "sha512-USlDT524woQ08aoZFzh3/Z6ch9Y/EWXEHQ/AaRN0SkKq4t2Jw2R2339tSXmwuVoY7LLlBCbOIlx2myP/L5zk0g==", 2239 | "dev": true 2240 | }, 2241 | "is-extglob": { 2242 | "version": "2.1.1", 2243 | "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", 2244 | "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", 2245 | "dev": true 2246 | }, 2247 | "is-fullwidth-code-point": { 2248 | "version": "2.0.0", 2249 | "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", 2250 | "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", 2251 | "dev": true 2252 | }, 2253 | "is-glob": { 2254 | "version": "4.0.1", 2255 | "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz", 2256 | "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==", 2257 | "dev": true, 2258 | "requires": { 2259 | "is-extglob": "^2.1.1" 2260 | } 2261 | }, 2262 | "is-plain-obj": { 2263 | "version": "1.1.0", 2264 | "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz", 2265 | "integrity": "sha1-caUMhCnfync8kqOQpKA7OfzVHT4=", 2266 | "dev": true 2267 | }, 2268 | "is-promise": { 2269 | "version": "2.1.0", 2270 | "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.1.0.tgz", 2271 | "integrity": "sha1-eaKp7OfwlugPNtKy87wWwf9L8/o=", 2272 | "dev": true 2273 | }, 2274 | "is-regex": { 2275 | "version": "1.1.0", 2276 | "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.0.tgz", 2277 | "integrity": "sha512-iI97M8KTWID2la5uYXlkbSDQIg4F6o1sYboZKKTDpnDQMLtUL86zxhgDet3Q2SriaYsyGqZ6Mn2SjbRKeLHdqw==", 2278 | "dev": true, 2279 | "requires": { 2280 | "has-symbols": "^1.0.1" 2281 | } 2282 | }, 2283 | "is-stream": { 2284 | "version": "1.1.0", 2285 | "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", 2286 | "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=", 2287 | "dev": true 2288 | }, 2289 | "is-string": { 2290 | "version": "1.0.5", 2291 | "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.5.tgz", 2292 | "integrity": "sha512-buY6VNRjhQMiF1qWDouloZlQbRhDPCebwxSjxMjxgemYT46YMd2NR0/H+fBhEfWX4A/w9TBJ+ol+okqJKFE6vQ==", 2293 | "dev": true 2294 | }, 2295 | "is-symbol": { 2296 | "version": "1.0.3", 2297 | "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.3.tgz", 2298 | "integrity": "sha512-OwijhaRSgqvhm/0ZdAcXNZt9lYdKFpcRDT5ULUuYXPoT794UNOdU+gpT6Rzo7b4V2HUl/op6GqY894AZwv9faQ==", 2299 | "dev": true, 2300 | "requires": { 2301 | "has-symbols": "^1.0.1" 2302 | } 2303 | }, 2304 | "isarray": { 2305 | "version": "1.0.0", 2306 | "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", 2307 | "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", 2308 | "dev": true 2309 | }, 2310 | "isexe": { 2311 | "version": "2.0.0", 2312 | "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", 2313 | "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", 2314 | "dev": true 2315 | }, 2316 | "jest-worker": { 2317 | "version": "24.9.0", 2318 | "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-24.9.0.tgz", 2319 | "integrity": "sha512-51PE4haMSXcHohnSMdM42anbvZANYTqMrr52tVKPqqsPJMzoP6FYYDVqahX/HrAoKEKz3uUPzSvKs9A3qR4iVw==", 2320 | "dev": true, 2321 | "requires": { 2322 | "merge-stream": "^2.0.0", 2323 | "supports-color": "^6.1.0" 2324 | }, 2325 | "dependencies": { 2326 | "supports-color": { 2327 | "version": "6.1.0", 2328 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", 2329 | "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", 2330 | "dev": true, 2331 | "requires": { 2332 | "has-flag": "^3.0.0" 2333 | } 2334 | } 2335 | } 2336 | }, 2337 | "js-tokens": { 2338 | "version": "4.0.0", 2339 | "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", 2340 | "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", 2341 | "dev": true 2342 | }, 2343 | "js-yaml": { 2344 | "version": "3.13.1", 2345 | "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.13.1.tgz", 2346 | "integrity": "sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw==", 2347 | "dev": true, 2348 | "requires": { 2349 | "argparse": "^1.0.7", 2350 | "esprima": "^4.0.0" 2351 | } 2352 | }, 2353 | "jsesc": { 2354 | "version": "2.5.2", 2355 | "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", 2356 | "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", 2357 | "dev": true 2358 | }, 2359 | "json-schema-traverse": { 2360 | "version": "0.4.1", 2361 | "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", 2362 | "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", 2363 | "dev": true 2364 | }, 2365 | "json-stable-stringify-without-jsonify": { 2366 | "version": "1.0.1", 2367 | "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", 2368 | "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=", 2369 | "dev": true 2370 | }, 2371 | "json5": { 2372 | "version": "2.1.3", 2373 | "resolved": "https://registry.npmjs.org/json5/-/json5-2.1.3.tgz", 2374 | "integrity": "sha512-KXPvOm8K9IJKFM0bmdn8QXh7udDh1g/giieX0NLCaMnb4hEiVFqnop2ImTXCc5e0/oHz3LTqmHGtExn5hfMkOA==", 2375 | "dev": true, 2376 | "requires": { 2377 | "minimist": "^1.2.5" 2378 | } 2379 | }, 2380 | "jsonfile": { 2381 | "version": "4.0.0", 2382 | "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", 2383 | "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=", 2384 | "dev": true, 2385 | "requires": { 2386 | "graceful-fs": "^4.1.6" 2387 | } 2388 | }, 2389 | "leven": { 2390 | "version": "3.1.0", 2391 | "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz", 2392 | "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==", 2393 | "dev": true 2394 | }, 2395 | "levenary": { 2396 | "version": "1.1.1", 2397 | "resolved": "https://registry.npmjs.org/levenary/-/levenary-1.1.1.tgz", 2398 | "integrity": "sha512-mkAdOIt79FD6irqjYSs4rdbnlT5vRonMEvBVPVb3XmevfS8kgRXwfes0dhPdEtzTWD/1eNE/Bm/G1iRt6DcnQQ==", 2399 | "dev": true, 2400 | "requires": { 2401 | "leven": "^3.1.0" 2402 | } 2403 | }, 2404 | "levn": { 2405 | "version": "0.3.0", 2406 | "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", 2407 | "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=", 2408 | "dev": true, 2409 | "requires": { 2410 | "prelude-ls": "~1.1.2", 2411 | "type-check": "~0.3.2" 2412 | } 2413 | }, 2414 | "livereload": { 2415 | "version": "0.9.1", 2416 | "resolved": "https://registry.npmjs.org/livereload/-/livereload-0.9.1.tgz", 2417 | "integrity": "sha512-9g7sua11kkyZNo2hLRCG3LuZZwqexoyEyecSlV8cAsfAVVCZqLzVir6XDqmH0r+Vzgnd5LrdHDMyjtFnJQLAYw==", 2418 | "dev": true, 2419 | "requires": { 2420 | "chokidar": "^3.3.0", 2421 | "livereload-js": "^3.1.0", 2422 | "opts": ">= 1.2.0", 2423 | "ws": "^6.2.1" 2424 | } 2425 | }, 2426 | "livereload-js": { 2427 | "version": "3.2.3", 2428 | "resolved": "https://registry.npmjs.org/livereload-js/-/livereload-js-3.2.3.tgz", 2429 | "integrity": "sha512-dXL/WgTGI2K3oeYX/z1lngFXSKtjCB2j7n9WSSluoU6/6+N4LWNoMiCBFNgn8dh3luBn4JBajVSvM5I7Xn6SLA==", 2430 | "dev": true 2431 | }, 2432 | "load-json-file": { 2433 | "version": "2.0.0", 2434 | "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-2.0.0.tgz", 2435 | "integrity": "sha1-eUfkIUmvgNaWy/eXvKq8/h/inKg=", 2436 | "dev": true, 2437 | "requires": { 2438 | "graceful-fs": "^4.1.2", 2439 | "parse-json": "^2.2.0", 2440 | "pify": "^2.0.0", 2441 | "strip-bom": "^3.0.0" 2442 | } 2443 | }, 2444 | "locate-path": { 2445 | "version": "2.0.0", 2446 | "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", 2447 | "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", 2448 | "dev": true, 2449 | "requires": { 2450 | "p-locate": "^2.0.0", 2451 | "path-exists": "^3.0.0" 2452 | } 2453 | }, 2454 | "lodash": { 2455 | "version": "4.17.19", 2456 | "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.19.tgz", 2457 | "integrity": "sha512-JNvd8XER9GQX0v2qJgsaN/mzFCNA5BRe/j8JN9d+tWyGLSodKQHKFicdwNYzWwI3wjRnaKPsGj1XkBjx/F96DQ==", 2458 | "dev": true 2459 | }, 2460 | "loose-envify": { 2461 | "version": "1.4.0", 2462 | "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", 2463 | "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", 2464 | "dev": true, 2465 | "requires": { 2466 | "js-tokens": "^3.0.0 || ^4.0.0" 2467 | } 2468 | }, 2469 | "magic-string": { 2470 | "version": "0.25.7", 2471 | "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.7.tgz", 2472 | "integrity": "sha512-4CrMT5DOHTDk4HYDlzmwu4FVCcIYI8gauveasrdCu2IKIFOJ3f0v/8MDGJCDL9oD2ppz/Av1b0Nj345H9M+XIA==", 2473 | "dev": true, 2474 | "requires": { 2475 | "sourcemap-codec": "^1.4.4" 2476 | } 2477 | }, 2478 | "merge-stream": { 2479 | "version": "2.0.0", 2480 | "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", 2481 | "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", 2482 | "dev": true 2483 | }, 2484 | "mime": { 2485 | "version": "2.4.2", 2486 | "resolved": "https://registry.npmjs.org/mime/-/mime-2.4.2.tgz", 2487 | "integrity": "sha512-zJBfZDkwRu+j3Pdd2aHsR5GfH2jIWhmL1ZzBoc+X+3JEti2hbArWcyJ+1laC1D2/U/W1a/+Cegj0/OnEU2ybjg==", 2488 | "dev": true 2489 | }, 2490 | "mimic-fn": { 2491 | "version": "1.2.0", 2492 | "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz", 2493 | "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==", 2494 | "dev": true 2495 | }, 2496 | "minimatch": { 2497 | "version": "3.0.4", 2498 | "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", 2499 | "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", 2500 | "dev": true, 2501 | "requires": { 2502 | "brace-expansion": "^1.1.7" 2503 | } 2504 | }, 2505 | "minimist": { 2506 | "version": "1.2.5", 2507 | "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", 2508 | "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", 2509 | "dev": true 2510 | }, 2511 | "mkdirp": { 2512 | "version": "0.5.5", 2513 | "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", 2514 | "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", 2515 | "dev": true, 2516 | "requires": { 2517 | "minimist": "^1.2.5" 2518 | } 2519 | }, 2520 | "ms": { 2521 | "version": "2.1.1", 2522 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", 2523 | "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==", 2524 | "dev": true 2525 | }, 2526 | "mute-stream": { 2527 | "version": "0.0.7", 2528 | "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.7.tgz", 2529 | "integrity": "sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s=", 2530 | "dev": true 2531 | }, 2532 | "natural-compare": { 2533 | "version": "1.4.0", 2534 | "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", 2535 | "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=", 2536 | "dev": true 2537 | }, 2538 | "nice-try": { 2539 | "version": "1.0.5", 2540 | "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", 2541 | "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==", 2542 | "dev": true 2543 | }, 2544 | "node-releases": { 2545 | "version": "1.1.58", 2546 | "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.58.tgz", 2547 | "integrity": "sha512-NxBudgVKiRh/2aPWMgPR7bPTX0VPmGx5QBwCtdHitnqFE5/O8DeBXuIMH1nwNnw/aMo6AjOrpsHzfY3UbUJ7yg==", 2548 | "dev": true 2549 | }, 2550 | "normalize-package-data": { 2551 | "version": "2.5.0", 2552 | "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", 2553 | "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", 2554 | "dev": true, 2555 | "requires": { 2556 | "hosted-git-info": "^2.1.4", 2557 | "resolve": "^1.10.0", 2558 | "semver": "2 || 3 || 4 || 5", 2559 | "validate-npm-package-license": "^3.0.1" 2560 | } 2561 | }, 2562 | "normalize-path": { 2563 | "version": "3.0.0", 2564 | "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", 2565 | "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", 2566 | "dev": true 2567 | }, 2568 | "normalize-url": { 2569 | "version": "1.9.1", 2570 | "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-1.9.1.tgz", 2571 | "integrity": "sha1-LMDWazHqIwNkWENuNiDYWVTGbDw=", 2572 | "dev": true, 2573 | "requires": { 2574 | "object-assign": "^4.0.1", 2575 | "prepend-http": "^1.0.0", 2576 | "query-string": "^4.1.0", 2577 | "sort-keys": "^1.0.0" 2578 | } 2579 | }, 2580 | "nth-check": { 2581 | "version": "1.0.2", 2582 | "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-1.0.2.tgz", 2583 | "integrity": "sha512-WeBOdju8SnzPN5vTUJYxYUxLeXpCaVP5i5e0LF8fg7WORF2Wd7wFX/pk0tYZk7s8T+J7VLy0Da6J1+wCT0AtHg==", 2584 | "dev": true, 2585 | "requires": { 2586 | "boolbase": "~1.0.0" 2587 | } 2588 | }, 2589 | "object-assign": { 2590 | "version": "4.1.1", 2591 | "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", 2592 | "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", 2593 | "dev": true 2594 | }, 2595 | "object-inspect": { 2596 | "version": "1.8.0", 2597 | "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.8.0.tgz", 2598 | "integrity": "sha512-jLdtEOB112fORuypAyl/50VRVIBIdVQOSUUGQHzJ4xBSbit81zRarz7GThkEFZy1RceYrWYcPcBFPQwHyAc1gA==", 2599 | "dev": true 2600 | }, 2601 | "object-keys": { 2602 | "version": "1.1.1", 2603 | "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", 2604 | "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", 2605 | "dev": true 2606 | }, 2607 | "object.assign": { 2608 | "version": "4.1.0", 2609 | "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.0.tgz", 2610 | "integrity": "sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w==", 2611 | "dev": true, 2612 | "requires": { 2613 | "define-properties": "^1.1.2", 2614 | "function-bind": "^1.1.1", 2615 | "has-symbols": "^1.0.0", 2616 | "object-keys": "^1.0.11" 2617 | } 2618 | }, 2619 | "object.entries": { 2620 | "version": "1.1.2", 2621 | "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.2.tgz", 2622 | "integrity": "sha512-BQdB9qKmb/HyNdMNWVr7O3+z5MUIx3aiegEIJqjMBbBf0YT9RRxTJSim4mzFqtyr7PDAHigq0N9dO0m0tRakQA==", 2623 | "dev": true, 2624 | "requires": { 2625 | "define-properties": "^1.1.3", 2626 | "es-abstract": "^1.17.5", 2627 | "has": "^1.0.3" 2628 | } 2629 | }, 2630 | "object.values": { 2631 | "version": "1.1.1", 2632 | "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.1.tgz", 2633 | "integrity": "sha512-WTa54g2K8iu0kmS/us18jEmdv1a4Wi//BZ/DTVYEcH0XhLM5NYdpDHja3gt57VrZLcNAO2WGA+KpWsDBaHt6eA==", 2634 | "dev": true, 2635 | "requires": { 2636 | "define-properties": "^1.1.3", 2637 | "es-abstract": "^1.17.0-next.1", 2638 | "function-bind": "^1.1.1", 2639 | "has": "^1.0.3" 2640 | } 2641 | }, 2642 | "once": { 2643 | "version": "1.4.0", 2644 | "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", 2645 | "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", 2646 | "dev": true, 2647 | "requires": { 2648 | "wrappy": "1" 2649 | } 2650 | }, 2651 | "onetime": { 2652 | "version": "2.0.1", 2653 | "resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz", 2654 | "integrity": "sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ=", 2655 | "dev": true, 2656 | "requires": { 2657 | "mimic-fn": "^1.0.0" 2658 | } 2659 | }, 2660 | "opener": { 2661 | "version": "1.5.1", 2662 | "resolved": "https://registry.npmjs.org/opener/-/opener-1.5.1.tgz", 2663 | "integrity": "sha512-goYSy5c2UXE4Ra1xixabeVh1guIX/ZV/YokJksb6q2lubWu6UbvPQ20p542/sFIll1nl8JnCyK9oBaOcCWXwvA==", 2664 | "dev": true 2665 | }, 2666 | "optionator": { 2667 | "version": "0.8.2", 2668 | "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.2.tgz", 2669 | "integrity": "sha1-NkxeQJ0/TWMB1sC0wFu6UBgK62Q=", 2670 | "dev": true, 2671 | "requires": { 2672 | "deep-is": "~0.1.3", 2673 | "fast-levenshtein": "~2.0.4", 2674 | "levn": "~0.3.0", 2675 | "prelude-ls": "~1.1.2", 2676 | "type-check": "~0.3.2", 2677 | "wordwrap": "~1.0.0" 2678 | } 2679 | }, 2680 | "opts": { 2681 | "version": "1.2.7", 2682 | "resolved": "https://registry.npmjs.org/opts/-/opts-1.2.7.tgz", 2683 | "integrity": "sha512-hwZhzGGG/GQ7igxAVFOEun2N4fWul31qE9nfBdCnZGQCB5+L7tN9xZ+94B4aUpLOJx/of3zZs5XsuubayQYQjA==", 2684 | "dev": true 2685 | }, 2686 | "os-homedir": { 2687 | "version": "2.0.0", 2688 | "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-2.0.0.tgz", 2689 | "integrity": "sha512-saRNz0DSC5C/I++gFIaJTXoFJMRwiP5zHar5vV3xQ2TkgEw6hDCcU5F272JjUylpiVgBrZNQHnfjkLabTfb92Q==", 2690 | "dev": true 2691 | }, 2692 | "os-tmpdir": { 2693 | "version": "1.0.2", 2694 | "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", 2695 | "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=", 2696 | "dev": true 2697 | }, 2698 | "p-limit": { 2699 | "version": "1.3.0", 2700 | "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", 2701 | "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", 2702 | "dev": true, 2703 | "requires": { 2704 | "p-try": "^1.0.0" 2705 | } 2706 | }, 2707 | "p-locate": { 2708 | "version": "2.0.0", 2709 | "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", 2710 | "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", 2711 | "dev": true, 2712 | "requires": { 2713 | "p-limit": "^1.1.0" 2714 | } 2715 | }, 2716 | "p-try": { 2717 | "version": "1.0.0", 2718 | "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", 2719 | "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=", 2720 | "dev": true 2721 | }, 2722 | "parent-module": { 2723 | "version": "1.0.1", 2724 | "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", 2725 | "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", 2726 | "dev": true, 2727 | "requires": { 2728 | "callsites": "^3.0.0" 2729 | } 2730 | }, 2731 | "parse-json": { 2732 | "version": "2.2.0", 2733 | "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", 2734 | "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", 2735 | "dev": true, 2736 | "requires": { 2737 | "error-ex": "^1.2.0" 2738 | } 2739 | }, 2740 | "parse5": { 2741 | "version": "3.0.3", 2742 | "resolved": "https://registry.npmjs.org/parse5/-/parse5-3.0.3.tgz", 2743 | "integrity": "sha512-rgO9Zg5LLLkfJF9E6CCmXlSE4UVceloys8JrFqCcHloC3usd/kJCyPDwH2SOlzix2j3xaP9sUX3e8+kvkuleAA==", 2744 | "dev": true, 2745 | "requires": { 2746 | "@types/node": "*" 2747 | } 2748 | }, 2749 | "path-exists": { 2750 | "version": "3.0.0", 2751 | "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", 2752 | "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", 2753 | "dev": true 2754 | }, 2755 | "path-is-absolute": { 2756 | "version": "1.0.1", 2757 | "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", 2758 | "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", 2759 | "dev": true 2760 | }, 2761 | "path-is-inside": { 2762 | "version": "1.0.2", 2763 | "resolved": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz", 2764 | "integrity": "sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM=", 2765 | "dev": true 2766 | }, 2767 | "path-key": { 2768 | "version": "2.0.1", 2769 | "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", 2770 | "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", 2771 | "dev": true 2772 | }, 2773 | "path-parse": { 2774 | "version": "1.0.6", 2775 | "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz", 2776 | "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==", 2777 | "dev": true 2778 | }, 2779 | "path-type": { 2780 | "version": "2.0.0", 2781 | "resolved": "https://registry.npmjs.org/path-type/-/path-type-2.0.0.tgz", 2782 | "integrity": "sha1-8BLMuEFbcJb8LaoQVMPXI4lZTHM=", 2783 | "dev": true, 2784 | "requires": { 2785 | "pify": "^2.0.0" 2786 | } 2787 | }, 2788 | "picomatch": { 2789 | "version": "2.2.2", 2790 | "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.2.2.tgz", 2791 | "integrity": "sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg==", 2792 | "dev": true 2793 | }, 2794 | "pify": { 2795 | "version": "2.3.0", 2796 | "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", 2797 | "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", 2798 | "dev": true 2799 | }, 2800 | "pinkie": { 2801 | "version": "2.0.4", 2802 | "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", 2803 | "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=", 2804 | "dev": true 2805 | }, 2806 | "pinkie-promise": { 2807 | "version": "2.0.1", 2808 | "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", 2809 | "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", 2810 | "dev": true, 2811 | "requires": { 2812 | "pinkie": "^2.0.0" 2813 | } 2814 | }, 2815 | "pkg-dir": { 2816 | "version": "2.0.0", 2817 | "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-2.0.0.tgz", 2818 | "integrity": "sha1-9tXREJ4Z1j7fQo4L1X4Sd3YVM0s=", 2819 | "dev": true, 2820 | "requires": { 2821 | "find-up": "^2.1.0" 2822 | } 2823 | }, 2824 | "pkg-up": { 2825 | "version": "2.0.0", 2826 | "resolved": "https://registry.npmjs.org/pkg-up/-/pkg-up-2.0.0.tgz", 2827 | "integrity": "sha1-yBmscoBZpGHKscOImivjxJoATX8=", 2828 | "dev": true, 2829 | "requires": { 2830 | "find-up": "^2.1.0" 2831 | } 2832 | }, 2833 | "prelude-ls": { 2834 | "version": "1.1.2", 2835 | "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", 2836 | "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=", 2837 | "dev": true 2838 | }, 2839 | "prepend-http": { 2840 | "version": "1.0.4", 2841 | "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-1.0.4.tgz", 2842 | "integrity": "sha1-1PRWKwzjaW5BrFLQ4ALlemNdxtw=", 2843 | "dev": true 2844 | }, 2845 | "private": { 2846 | "version": "0.1.8", 2847 | "resolved": "https://registry.npmjs.org/private/-/private-0.1.8.tgz", 2848 | "integrity": "sha512-VvivMrbvd2nKkiG38qjULzlc+4Vx4wm/whI9pQD35YrARNnhxeiRktSOhSukRLFNlzg6Br/cJPet5J/u19r/mg==", 2849 | "dev": true 2850 | }, 2851 | "progress": { 2852 | "version": "2.0.3", 2853 | "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", 2854 | "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", 2855 | "dev": true 2856 | }, 2857 | "punycode": { 2858 | "version": "2.1.1", 2859 | "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", 2860 | "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", 2861 | "dev": true 2862 | }, 2863 | "query-string": { 2864 | "version": "4.3.4", 2865 | "resolved": "https://registry.npmjs.org/query-string/-/query-string-4.3.4.tgz", 2866 | "integrity": "sha1-u7aTucqRXCMlFbIosaArYJBD2+s=", 2867 | "dev": true, 2868 | "requires": { 2869 | "object-assign": "^4.1.0", 2870 | "strict-uri-encode": "^1.0.0" 2871 | } 2872 | }, 2873 | "read-pkg": { 2874 | "version": "2.0.0", 2875 | "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-2.0.0.tgz", 2876 | "integrity": "sha1-jvHAYjxqbbDcZxPEv6xGMysjaPg=", 2877 | "dev": true, 2878 | "requires": { 2879 | "load-json-file": "^2.0.0", 2880 | "normalize-package-data": "^2.3.2", 2881 | "path-type": "^2.0.0" 2882 | } 2883 | }, 2884 | "read-pkg-up": { 2885 | "version": "2.0.0", 2886 | "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-2.0.0.tgz", 2887 | "integrity": "sha1-a3KoBImE4MQeeVEP1en6mbO1Sb4=", 2888 | "dev": true, 2889 | "requires": { 2890 | "find-up": "^2.0.0", 2891 | "read-pkg": "^2.0.0" 2892 | } 2893 | }, 2894 | "readable-stream": { 2895 | "version": "3.3.0", 2896 | "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.3.0.tgz", 2897 | "integrity": "sha512-EsI+s3k3XsW+fU8fQACLN59ky34AZ14LoeVZpYwmZvldCFo0r0gnelwF2TcMjLor/BTL5aDJVBMkss0dthToPw==", 2898 | "dev": true, 2899 | "requires": { 2900 | "inherits": "^2.0.3", 2901 | "string_decoder": "^1.1.1", 2902 | "util-deprecate": "^1.0.1" 2903 | } 2904 | }, 2905 | "readdirp": { 2906 | "version": "3.4.0", 2907 | "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.4.0.tgz", 2908 | "integrity": "sha512-0xe001vZBnJEK+uKcj8qOhyAKPzIT+gStxWr3LCB0DwcXR5NZJ3IaC+yGnHCYzB/S7ov3m3EEbZI2zeNvX+hGQ==", 2909 | "dev": true, 2910 | "requires": { 2911 | "picomatch": "^2.2.1" 2912 | } 2913 | }, 2914 | "regenerate": { 2915 | "version": "1.4.1", 2916 | "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.1.tgz", 2917 | "integrity": "sha512-j2+C8+NtXQgEKWk49MMP5P/u2GhnahTtVkRIHr5R5lVRlbKvmQ+oS+A5aLKWp2ma5VkT8sh6v+v4hbH0YHR66A==", 2918 | "dev": true 2919 | }, 2920 | "regenerate-unicode-properties": { 2921 | "version": "8.2.0", 2922 | "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-8.2.0.tgz", 2923 | "integrity": "sha512-F9DjY1vKLo/tPePDycuH3dn9H1OTPIkVD9Kz4LODu+F2C75mgjAJ7x/gwy6ZcSNRAAkhNlJSOHRe8k3p+K9WhA==", 2924 | "dev": true, 2925 | "requires": { 2926 | "regenerate": "^1.4.0" 2927 | } 2928 | }, 2929 | "regenerator-runtime": { 2930 | "version": "0.13.5", 2931 | "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.5.tgz", 2932 | "integrity": "sha512-ZS5w8CpKFinUzOwW3c83oPeVXoNsrLsaCoLtJvAClH135j/R77RuymhiSErhm2lKcwSCIpmvIWSbDkIfAqKQlA==" 2933 | }, 2934 | "regenerator-transform": { 2935 | "version": "0.14.4", 2936 | "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.14.4.tgz", 2937 | "integrity": "sha512-EaJaKPBI9GvKpvUz2mz4fhx7WPgvwRLY9v3hlNHWmAuJHI13T4nwKnNvm5RWJzEdnI5g5UwtOww+S8IdoUC2bw==", 2938 | "dev": true, 2939 | "requires": { 2940 | "@babel/runtime": "^7.8.4", 2941 | "private": "^0.1.8" 2942 | } 2943 | }, 2944 | "regexpp": { 2945 | "version": "2.0.1", 2946 | "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-2.0.1.tgz", 2947 | "integrity": "sha512-lv0M6+TkDVniA3aD1Eg0DVpfU/booSu7Eev3TDO/mZKHBfVjgCGTV4t4buppESEYDtkArYFOxTJWv6S5C+iaNw==", 2948 | "dev": true 2949 | }, 2950 | "regexpu-core": { 2951 | "version": "4.7.0", 2952 | "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-4.7.0.tgz", 2953 | "integrity": "sha512-TQ4KXRnIn6tz6tjnrXEkD/sshygKH/j5KzK86X8MkeHyZ8qst/LZ89j3X4/8HEIfHANTFIP/AbXakeRhWIl5YQ==", 2954 | "dev": true, 2955 | "requires": { 2956 | "regenerate": "^1.4.0", 2957 | "regenerate-unicode-properties": "^8.2.0", 2958 | "regjsgen": "^0.5.1", 2959 | "regjsparser": "^0.6.4", 2960 | "unicode-match-property-ecmascript": "^1.0.4", 2961 | "unicode-match-property-value-ecmascript": "^1.2.0" 2962 | } 2963 | }, 2964 | "regjsgen": { 2965 | "version": "0.5.2", 2966 | "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.5.2.tgz", 2967 | "integrity": "sha512-OFFT3MfrH90xIW8OOSyUrk6QHD5E9JOTeGodiJeBS3J6IwlgzJMNE/1bZklWz5oTg+9dCMyEetclvCVXOPoN3A==", 2968 | "dev": true 2969 | }, 2970 | "regjsparser": { 2971 | "version": "0.6.4", 2972 | "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.6.4.tgz", 2973 | "integrity": "sha512-64O87/dPDgfk8/RQqC4gkZoGyyWFIEUTTh80CU6CWuK5vkCGyekIx+oKcEIYtP/RAxSQltCZHCNu/mdd7fqlJw==", 2974 | "dev": true, 2975 | "requires": { 2976 | "jsesc": "~0.5.0" 2977 | }, 2978 | "dependencies": { 2979 | "jsesc": { 2980 | "version": "0.5.0", 2981 | "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", 2982 | "integrity": "sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=", 2983 | "dev": true 2984 | } 2985 | } 2986 | }, 2987 | "resolve": { 2988 | "version": "1.17.0", 2989 | "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.17.0.tgz", 2990 | "integrity": "sha512-ic+7JYiV8Vi2yzQGFWOkiZD5Z9z7O2Zhm9XMaTxdJExKasieFCr+yXZ/WmXsckHiKl12ar0y6XiXDx3m4RHn1w==", 2991 | "dev": true, 2992 | "requires": { 2993 | "path-parse": "^1.0.6" 2994 | } 2995 | }, 2996 | "resolve-from": { 2997 | "version": "4.0.0", 2998 | "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", 2999 | "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", 3000 | "dev": true 3001 | }, 3002 | "restore-cursor": { 3003 | "version": "2.0.0", 3004 | "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz", 3005 | "integrity": "sha1-n37ih/gv0ybU/RYpI9YhKe7g368=", 3006 | "dev": true, 3007 | "requires": { 3008 | "onetime": "^2.0.0", 3009 | "signal-exit": "^3.0.2" 3010 | } 3011 | }, 3012 | "rimraf": { 3013 | "version": "2.6.3", 3014 | "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz", 3015 | "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==", 3016 | "dev": true, 3017 | "requires": { 3018 | "glob": "^7.1.3" 3019 | } 3020 | }, 3021 | "rollup": { 3022 | "version": "1.32.1", 3023 | "resolved": "https://registry.npmjs.org/rollup/-/rollup-1.32.1.tgz", 3024 | "integrity": "sha512-/2HA0Ec70TvQnXdzynFffkjA6XN+1e2pEv/uKS5Ulca40g2L7KuOE3riasHoNVHOsFD5KKZgDsMk1CP3Tw9s+A==", 3025 | "dev": true, 3026 | "requires": { 3027 | "@types/estree": "*", 3028 | "@types/node": "*", 3029 | "acorn": "^7.1.0" 3030 | }, 3031 | "dependencies": { 3032 | "acorn": { 3033 | "version": "7.3.1", 3034 | "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.3.1.tgz", 3035 | "integrity": "sha512-tLc0wSnatxAQHVHUapaHdz72pi9KUyHjq5KyHjGg9Y8Ifdc79pTh2XvI6I1/chZbnM7QtNKzh66ooDogPZSleA==", 3036 | "dev": true 3037 | } 3038 | } 3039 | }, 3040 | "rollup-plugin-babel": { 3041 | "version": "4.4.0", 3042 | "resolved": "https://registry.npmjs.org/rollup-plugin-babel/-/rollup-plugin-babel-4.4.0.tgz", 3043 | "integrity": "sha512-Lek/TYp1+7g7I+uMfJnnSJ7YWoD58ajo6Oarhlex7lvUce+RCKRuGRSgztDO3/MF/PuGKmUL5iTHKf208UNszw==", 3044 | "dev": true, 3045 | "requires": { 3046 | "@babel/helper-module-imports": "^7.0.0", 3047 | "rollup-pluginutils": "^2.8.1" 3048 | }, 3049 | "dependencies": { 3050 | "estree-walker": { 3051 | "version": "0.6.1", 3052 | "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-0.6.1.tgz", 3053 | "integrity": "sha512-SqmZANLWS0mnatqbSfRP5g8OXZC12Fgg1IwNtLsyHDzJizORW4khDfjPqJZsemPWBB2uqykUah5YpQ6epsqC/w==", 3054 | "dev": true 3055 | }, 3056 | "rollup-pluginutils": { 3057 | "version": "2.8.2", 3058 | "resolved": "https://registry.npmjs.org/rollup-pluginutils/-/rollup-pluginutils-2.8.2.tgz", 3059 | "integrity": "sha512-EEp9NhnUkwY8aif6bxgovPHMoMoNr2FulJziTndpt5H9RdwC47GSGuII9XxpSdzVGM0GWrNPHV6ie1LTNJPaLQ==", 3060 | "dev": true, 3061 | "requires": { 3062 | "estree-walker": "^0.6.1" 3063 | } 3064 | } 3065 | } 3066 | }, 3067 | "rollup-plugin-buble": { 3068 | "version": "0.19.8", 3069 | "resolved": "https://registry.npmjs.org/rollup-plugin-buble/-/rollup-plugin-buble-0.19.8.tgz", 3070 | "integrity": "sha512-8J4zPk2DQdk3rxeZvxgzhHh/rm5nJkjwgcsUYisCQg1QbT5yagW+hehYEW7ZNns/NVbDCTv4JQ7h4fC8qKGOKw==", 3071 | "dev": true, 3072 | "requires": { 3073 | "buble": "^0.19.8", 3074 | "rollup-pluginutils": "^2.3.3" 3075 | } 3076 | }, 3077 | "rollup-plugin-eslint": { 3078 | "version": "5.1.0", 3079 | "resolved": "https://registry.npmjs.org/rollup-plugin-eslint/-/rollup-plugin-eslint-5.1.0.tgz", 3080 | "integrity": "sha512-jmjqDC42HQsevgBuGQuDb9xhkei4IRkwufAbd6pe5Cbd969p/CjO3SPIwVeINSxXrzrGh9VG72EKtYVFwybxpQ==", 3081 | "dev": true, 3082 | "requires": { 3083 | "eslint": "^5.1.0", 3084 | "rollup-pluginutils": "^2.3.0" 3085 | } 3086 | }, 3087 | "rollup-plugin-fill-html": { 3088 | "version": "1.1.0", 3089 | "resolved": "https://registry.npmjs.org/rollup-plugin-fill-html/-/rollup-plugin-fill-html-1.1.0.tgz", 3090 | "integrity": "sha512-9tblM+KkhevBkVEyQvIuVh9o8gue7e6JTbMxQuBzCTLppiLRpKjh6Na80fqDcZZA6lziQdhcK+he7J/UxEtrCA==", 3091 | "dev": true, 3092 | "requires": { 3093 | "cheerio": "^1.0.0-rc.2", 3094 | "hasha": "^3.0.0" 3095 | } 3096 | }, 3097 | "rollup-plugin-livereload": { 3098 | "version": "1.3.0", 3099 | "resolved": "https://registry.npmjs.org/rollup-plugin-livereload/-/rollup-plugin-livereload-1.3.0.tgz", 3100 | "integrity": "sha512-abyqXaB21+nFHo+vJULBqfzNx6zXABC19UyvqgDfdoxR/8pFAd041GO+GIUe8ZYC2DbuMUmioh1Lvbk14YLZgw==", 3101 | "dev": true, 3102 | "requires": { 3103 | "livereload": "^0.9.1" 3104 | } 3105 | }, 3106 | "rollup-plugin-serve": { 3107 | "version": "1.0.1", 3108 | "resolved": "https://registry.npmjs.org/rollup-plugin-serve/-/rollup-plugin-serve-1.0.1.tgz", 3109 | "integrity": "sha512-bni0pb4s1YLvn1xBmj+dH1OsLdp8gWA4zqh3yuEtT6/YHhg3nDneGU2GwMcRDQwY2tXzuI0uSeAlF1rY+ODitg==", 3110 | "dev": true, 3111 | "requires": { 3112 | "mime": ">=2.0.3", 3113 | "opener": "1" 3114 | } 3115 | }, 3116 | "rollup-plugin-uglify": { 3117 | "version": "6.0.4", 3118 | "resolved": "https://registry.npmjs.org/rollup-plugin-uglify/-/rollup-plugin-uglify-6.0.4.tgz", 3119 | "integrity": "sha512-ddgqkH02klveu34TF0JqygPwZnsbhHVI6t8+hGTcYHngPkQb5MIHI0XiztXIN/d6V9j+efwHAqEL7LspSxQXGw==", 3120 | "dev": true, 3121 | "requires": { 3122 | "@babel/code-frame": "^7.0.0", 3123 | "jest-worker": "^24.0.0", 3124 | "serialize-javascript": "^2.1.2", 3125 | "uglify-js": "^3.4.9" 3126 | } 3127 | }, 3128 | "rollup-pluginutils": { 3129 | "version": "2.8.2", 3130 | "resolved": "https://registry.npmjs.org/rollup-pluginutils/-/rollup-pluginutils-2.8.2.tgz", 3131 | "integrity": "sha512-EEp9NhnUkwY8aif6bxgovPHMoMoNr2FulJziTndpt5H9RdwC47GSGuII9XxpSdzVGM0GWrNPHV6ie1LTNJPaLQ==", 3132 | "dev": true, 3133 | "requires": { 3134 | "estree-walker": "^0.6.1" 3135 | } 3136 | }, 3137 | "run-async": { 3138 | "version": "2.3.0", 3139 | "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.3.0.tgz", 3140 | "integrity": "sha1-A3GrSuC91yDUFm19/aZP96RFpsA=", 3141 | "dev": true, 3142 | "requires": { 3143 | "is-promise": "^2.1.0" 3144 | } 3145 | }, 3146 | "rxjs": { 3147 | "version": "6.5.1", 3148 | "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.5.1.tgz", 3149 | "integrity": "sha512-y0j31WJc83wPu31vS1VlAFW5JGrnGC+j+TtGAa1fRQphy48+fDYiDmX8tjGloToEsMkxnouOg/1IzXGKkJnZMg==", 3150 | "dev": true, 3151 | "requires": { 3152 | "tslib": "^1.9.0" 3153 | } 3154 | }, 3155 | "safe-buffer": { 3156 | "version": "5.1.2", 3157 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", 3158 | "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", 3159 | "dev": true 3160 | }, 3161 | "safer-buffer": { 3162 | "version": "2.1.2", 3163 | "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", 3164 | "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", 3165 | "dev": true 3166 | }, 3167 | "semver": { 3168 | "version": "5.7.0", 3169 | "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.0.tgz", 3170 | "integrity": "sha512-Ya52jSX2u7QKghxeoFGpLwCtGlt7j0oY9DYb5apt9nPlJ42ID+ulTXESnt/qAQcoSERyZ5sl3LDIOw0nAn/5DA==", 3171 | "dev": true 3172 | }, 3173 | "serialize-javascript": { 3174 | "version": "2.1.2", 3175 | "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-2.1.2.tgz", 3176 | "integrity": "sha512-rs9OggEUF0V4jUSecXazOYsLfu7OGK2qIn3c7IPBiffz32XniEp/TX9Xmc9LQfK2nQ2QKHvZ2oygKUGU0lG4jQ==", 3177 | "dev": true 3178 | }, 3179 | "shebang-command": { 3180 | "version": "1.2.0", 3181 | "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", 3182 | "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", 3183 | "dev": true, 3184 | "requires": { 3185 | "shebang-regex": "^1.0.0" 3186 | } 3187 | }, 3188 | "shebang-regex": { 3189 | "version": "1.0.0", 3190 | "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", 3191 | "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", 3192 | "dev": true 3193 | }, 3194 | "signal-exit": { 3195 | "version": "3.0.2", 3196 | "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", 3197 | "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=", 3198 | "dev": true 3199 | }, 3200 | "slice-ansi": { 3201 | "version": "2.1.0", 3202 | "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-2.1.0.tgz", 3203 | "integrity": "sha512-Qu+VC3EwYLldKa1fCxuuvULvSJOKEgk9pi8dZeCVK7TqBfUNTH4sFkk4joj8afVSfAYgJoSOetjx9QWOJ5mYoQ==", 3204 | "dev": true, 3205 | "requires": { 3206 | "ansi-styles": "^3.2.0", 3207 | "astral-regex": "^1.0.0", 3208 | "is-fullwidth-code-point": "^2.0.0" 3209 | } 3210 | }, 3211 | "sort-keys": { 3212 | "version": "1.1.2", 3213 | "resolved": "https://registry.npmjs.org/sort-keys/-/sort-keys-1.1.2.tgz", 3214 | "integrity": "sha1-RBttTTRnmPG05J6JIK37oOVD+a0=", 3215 | "dev": true, 3216 | "requires": { 3217 | "is-plain-obj": "^1.0.0" 3218 | } 3219 | }, 3220 | "source-map": { 3221 | "version": "0.5.7", 3222 | "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", 3223 | "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", 3224 | "dev": true 3225 | }, 3226 | "sourcemap-codec": { 3227 | "version": "1.4.8", 3228 | "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz", 3229 | "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==", 3230 | "dev": true 3231 | }, 3232 | "spdx-correct": { 3233 | "version": "3.1.1", 3234 | "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.1.tgz", 3235 | "integrity": "sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==", 3236 | "dev": true, 3237 | "requires": { 3238 | "spdx-expression-parse": "^3.0.0", 3239 | "spdx-license-ids": "^3.0.0" 3240 | } 3241 | }, 3242 | "spdx-exceptions": { 3243 | "version": "2.3.0", 3244 | "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz", 3245 | "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==", 3246 | "dev": true 3247 | }, 3248 | "spdx-expression-parse": { 3249 | "version": "3.0.1", 3250 | "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", 3251 | "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", 3252 | "dev": true, 3253 | "requires": { 3254 | "spdx-exceptions": "^2.1.0", 3255 | "spdx-license-ids": "^3.0.0" 3256 | } 3257 | }, 3258 | "spdx-license-ids": { 3259 | "version": "3.0.5", 3260 | "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.5.tgz", 3261 | "integrity": "sha512-J+FWzZoynJEXGphVIS+XEh3kFSjZX/1i9gFBaWQcB+/tmpe2qUsSBABpcxqxnAxFdiUFEgAX1bjYGQvIZmoz9Q==", 3262 | "dev": true 3263 | }, 3264 | "sprintf-js": { 3265 | "version": "1.0.3", 3266 | "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", 3267 | "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", 3268 | "dev": true 3269 | }, 3270 | "strict-uri-encode": { 3271 | "version": "1.1.0", 3272 | "resolved": "https://registry.npmjs.org/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz", 3273 | "integrity": "sha1-J5siXfHVgrH1TmWt3UNS4Y+qBxM=", 3274 | "dev": true 3275 | }, 3276 | "string-width": { 3277 | "version": "2.1.1", 3278 | "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", 3279 | "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", 3280 | "dev": true, 3281 | "requires": { 3282 | "is-fullwidth-code-point": "^2.0.0", 3283 | "strip-ansi": "^4.0.0" 3284 | } 3285 | }, 3286 | "string.prototype.trimend": { 3287 | "version": "1.0.1", 3288 | "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.1.tgz", 3289 | "integrity": "sha512-LRPxFUaTtpqYsTeNKaFOw3R4bxIzWOnbQ837QfBylo8jIxtcbK/A/sMV7Q+OAV/vWo+7s25pOE10KYSjaSO06g==", 3290 | "dev": true, 3291 | "requires": { 3292 | "define-properties": "^1.1.3", 3293 | "es-abstract": "^1.17.5" 3294 | } 3295 | }, 3296 | "string.prototype.trimstart": { 3297 | "version": "1.0.1", 3298 | "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.1.tgz", 3299 | "integrity": "sha512-XxZn+QpvrBI1FOcg6dIpxUPgWCPuNXvMD72aaRaUQv1eD4e/Qy8i/hFTe0BUmD60p/QA6bh1avmuPTfNjqVWRw==", 3300 | "dev": true, 3301 | "requires": { 3302 | "define-properties": "^1.1.3", 3303 | "es-abstract": "^1.17.5" 3304 | } 3305 | }, 3306 | "string_decoder": { 3307 | "version": "1.2.0", 3308 | "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.2.0.tgz", 3309 | "integrity": "sha512-6YqyX6ZWEYguAxgZzHGL7SsCeGx3V2TtOTqZz1xSTSWnqsbWwbptafNyvf/ACquZUXV3DANr5BDIwNYe1mN42w==", 3310 | "dev": true, 3311 | "requires": { 3312 | "safe-buffer": "~5.1.0" 3313 | } 3314 | }, 3315 | "strip-ansi": { 3316 | "version": "4.0.0", 3317 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", 3318 | "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", 3319 | "dev": true, 3320 | "requires": { 3321 | "ansi-regex": "^3.0.0" 3322 | } 3323 | }, 3324 | "strip-bom": { 3325 | "version": "3.0.0", 3326 | "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", 3327 | "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=", 3328 | "dev": true 3329 | }, 3330 | "strip-json-comments": { 3331 | "version": "2.0.1", 3332 | "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", 3333 | "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=", 3334 | "dev": true 3335 | }, 3336 | "strip-outer": { 3337 | "version": "1.0.1", 3338 | "resolved": "https://registry.npmjs.org/strip-outer/-/strip-outer-1.0.1.tgz", 3339 | "integrity": "sha512-k55yxKHwaXnpYGsOzg4Vl8+tDrWylxDEpknGjhTiZB8dFRU5rTo9CAzeycivxV3s+zlTKwrs6WxMxR95n26kwg==", 3340 | "dev": true, 3341 | "requires": { 3342 | "escape-string-regexp": "^1.0.2" 3343 | } 3344 | }, 3345 | "strip-url-auth": { 3346 | "version": "1.0.1", 3347 | "resolved": "https://registry.npmjs.org/strip-url-auth/-/strip-url-auth-1.0.1.tgz", 3348 | "integrity": "sha1-IrD6OkE4WzO+PzMVUbu4N/oM164=", 3349 | "dev": true 3350 | }, 3351 | "supports-color": { 3352 | "version": "5.5.0", 3353 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", 3354 | "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", 3355 | "dev": true, 3356 | "requires": { 3357 | "has-flag": "^3.0.0" 3358 | } 3359 | }, 3360 | "table": { 3361 | "version": "5.2.3", 3362 | "resolved": "https://registry.npmjs.org/table/-/table-5.2.3.tgz", 3363 | "integrity": "sha512-N2RsDAMvDLvYwFcwbPyF3VmVSSkuF+G1e+8inhBLtHpvwXGw4QRPEZhihQNeEN0i1up6/f6ObCJXNdlRG3YVyQ==", 3364 | "dev": true, 3365 | "requires": { 3366 | "ajv": "^6.9.1", 3367 | "lodash": "^4.17.11", 3368 | "slice-ansi": "^2.1.0", 3369 | "string-width": "^3.0.0" 3370 | }, 3371 | "dependencies": { 3372 | "ansi-regex": { 3373 | "version": "4.1.0", 3374 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", 3375 | "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", 3376 | "dev": true 3377 | }, 3378 | "string-width": { 3379 | "version": "3.1.0", 3380 | "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", 3381 | "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", 3382 | "dev": true, 3383 | "requires": { 3384 | "emoji-regex": "^7.0.1", 3385 | "is-fullwidth-code-point": "^2.0.0", 3386 | "strip-ansi": "^5.1.0" 3387 | } 3388 | }, 3389 | "strip-ansi": { 3390 | "version": "5.2.0", 3391 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", 3392 | "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", 3393 | "dev": true, 3394 | "requires": { 3395 | "ansi-regex": "^4.1.0" 3396 | } 3397 | } 3398 | } 3399 | }, 3400 | "text-table": { 3401 | "version": "0.2.0", 3402 | "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", 3403 | "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=", 3404 | "dev": true 3405 | }, 3406 | "through": { 3407 | "version": "2.3.8", 3408 | "resolved": "http://registry.npmjs.org/through/-/through-2.3.8.tgz", 3409 | "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=", 3410 | "dev": true 3411 | }, 3412 | "tmp": { 3413 | "version": "0.0.33", 3414 | "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", 3415 | "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", 3416 | "dev": true, 3417 | "requires": { 3418 | "os-tmpdir": "~1.0.2" 3419 | } 3420 | }, 3421 | "to-fast-properties": { 3422 | "version": "2.0.0", 3423 | "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", 3424 | "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=", 3425 | "dev": true 3426 | }, 3427 | "trim-repeated": { 3428 | "version": "1.0.0", 3429 | "resolved": "https://registry.npmjs.org/trim-repeated/-/trim-repeated-1.0.0.tgz", 3430 | "integrity": "sha1-42RqLqTokTEr9+rObPsFOAvAHCE=", 3431 | "dev": true, 3432 | "requires": { 3433 | "escape-string-regexp": "^1.0.2" 3434 | } 3435 | }, 3436 | "tsconfig-paths": { 3437 | "version": "3.9.0", 3438 | "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.9.0.tgz", 3439 | "integrity": "sha512-dRcuzokWhajtZWkQsDVKbWyY+jgcLC5sqJhg2PSgf4ZkH2aHPvaOY8YWGhmjb68b5qqTfasSsDO9k7RUiEmZAw==", 3440 | "dev": true, 3441 | "requires": { 3442 | "@types/json5": "^0.0.29", 3443 | "json5": "^1.0.1", 3444 | "minimist": "^1.2.0", 3445 | "strip-bom": "^3.0.0" 3446 | }, 3447 | "dependencies": { 3448 | "json5": { 3449 | "version": "1.0.1", 3450 | "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", 3451 | "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", 3452 | "dev": true, 3453 | "requires": { 3454 | "minimist": "^1.2.0" 3455 | } 3456 | } 3457 | } 3458 | }, 3459 | "tslib": { 3460 | "version": "1.9.3", 3461 | "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.9.3.tgz", 3462 | "integrity": "sha512-4krF8scpejhaOgqzBEcGM7yDIEfi0/8+8zDRZhNZZ2kjmHJ4hv3zCbQWxoJGz1iw5U0Jl0nma13xzHXcncMavQ==", 3463 | "dev": true 3464 | }, 3465 | "type-check": { 3466 | "version": "0.3.2", 3467 | "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", 3468 | "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=", 3469 | "dev": true, 3470 | "requires": { 3471 | "prelude-ls": "~1.1.2" 3472 | } 3473 | }, 3474 | "uglify-js": { 3475 | "version": "3.9.4", 3476 | "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.9.4.tgz", 3477 | "integrity": "sha512-8RZBJq5smLOa7KslsNsVcSH+KOXf1uDU8yqLeNuVKwmT0T3FA0ZoXlinQfRad7SDcbZZRZE4ov+2v71EnxNyCA==", 3478 | "dev": true, 3479 | "requires": { 3480 | "commander": "~2.20.3" 3481 | } 3482 | }, 3483 | "unicode-canonical-property-names-ecmascript": { 3484 | "version": "1.0.4", 3485 | "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-1.0.4.tgz", 3486 | "integrity": "sha512-jDrNnXWHd4oHiTZnx/ZG7gtUTVp+gCcTTKr8L0HjlwphROEW3+Him+IpvC+xcJEFegapiMZyZe02CyuOnRmbnQ==", 3487 | "dev": true 3488 | }, 3489 | "unicode-match-property-ecmascript": { 3490 | "version": "1.0.4", 3491 | "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-1.0.4.tgz", 3492 | "integrity": "sha512-L4Qoh15vTfntsn4P1zqnHulG0LdXgjSO035fEpdtp6YxXhMT51Q6vgM5lYdG/5X3MjS+k/Y9Xw4SFCY9IkR0rg==", 3493 | "dev": true, 3494 | "requires": { 3495 | "unicode-canonical-property-names-ecmascript": "^1.0.4", 3496 | "unicode-property-aliases-ecmascript": "^1.0.4" 3497 | } 3498 | }, 3499 | "unicode-match-property-value-ecmascript": { 3500 | "version": "1.2.0", 3501 | "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-1.2.0.tgz", 3502 | "integrity": "sha512-wjuQHGQVofmSJv1uVISKLE5zO2rNGzM/KCYZch/QQvez7C1hUhBIuZ701fYXExuufJFMPhv2SyL8CyoIfMLbIQ==", 3503 | "dev": true 3504 | }, 3505 | "unicode-property-aliases-ecmascript": { 3506 | "version": "1.1.0", 3507 | "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-1.1.0.tgz", 3508 | "integrity": "sha512-PqSoPh/pWetQ2phoj5RLiaqIk4kCNwoV3CI+LfGmWLKI3rE3kl1h59XpX2BjgDrmbxD9ARtQobPGU1SguCYuQg==", 3509 | "dev": true 3510 | }, 3511 | "universalify": { 3512 | "version": "0.1.2", 3513 | "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", 3514 | "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", 3515 | "dev": true 3516 | }, 3517 | "uri-js": { 3518 | "version": "4.2.2", 3519 | "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz", 3520 | "integrity": "sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ==", 3521 | "dev": true, 3522 | "requires": { 3523 | "punycode": "^2.1.0" 3524 | } 3525 | }, 3526 | "util-deprecate": { 3527 | "version": "1.0.2", 3528 | "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", 3529 | "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", 3530 | "dev": true 3531 | }, 3532 | "validate-npm-package-license": { 3533 | "version": "3.0.4", 3534 | "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", 3535 | "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", 3536 | "dev": true, 3537 | "requires": { 3538 | "spdx-correct": "^3.0.0", 3539 | "spdx-expression-parse": "^3.0.0" 3540 | } 3541 | }, 3542 | "which": { 3543 | "version": "1.3.1", 3544 | "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", 3545 | "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", 3546 | "dev": true, 3547 | "requires": { 3548 | "isexe": "^2.0.0" 3549 | } 3550 | }, 3551 | "wordwrap": { 3552 | "version": "1.0.0", 3553 | "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", 3554 | "integrity": "sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=", 3555 | "dev": true 3556 | }, 3557 | "wrappy": { 3558 | "version": "1.0.2", 3559 | "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", 3560 | "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", 3561 | "dev": true 3562 | }, 3563 | "write": { 3564 | "version": "1.0.3", 3565 | "resolved": "https://registry.npmjs.org/write/-/write-1.0.3.tgz", 3566 | "integrity": "sha512-/lg70HAjtkUgWPVZhZcm+T4hkL8Zbtp1nFNOn3lRrxnlv50SRBv7cR7RqR+GMsd3hUXy9hWBo4CHTbFTcOYwig==", 3567 | "dev": true, 3568 | "requires": { 3569 | "mkdirp": "^0.5.1" 3570 | } 3571 | }, 3572 | "ws": { 3573 | "version": "6.2.1", 3574 | "resolved": "https://registry.npmjs.org/ws/-/ws-6.2.1.tgz", 3575 | "integrity": "sha512-GIyAXC2cB7LjvpgMt9EKS2ldqr0MTrORaleiOno6TweZ6r3TKtoFQWay/2PceJ3RuBasOHzXNn5Lrw1X0bEjqA==", 3576 | "dev": true, 3577 | "requires": { 3578 | "async-limiter": "~1.0.0" 3579 | } 3580 | } 3581 | } 3582 | } 3583 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "recorderx", 3 | "version": "2.0.2", 4 | "description": "Record and export audio in the browser via WebRTC api", 5 | "author": "Jialiang T. (rememhe@outlook.com)", 6 | "keywords": [ 7 | "audio", 8 | "recording", 9 | "WebRTC" 10 | ], 11 | "license": "MIT", 12 | "repository": { 13 | "type": "git", 14 | "url": "https://github.com/Zousdie/recorderx.git" 15 | }, 16 | "scripts": { 17 | "dev": "rollup -c build/rollup.dev.js --environment NODE_ENV:development,BABEL_MODULE:umd --watch", 18 | "build:lib": "rollup -c build/rollup.config.js --environment NODE_ENV:production", 19 | "build:umd": "rollup -c build/rollup.config.js --environment NODE_ENV:production,BABEL_MODULE:umd", 20 | "build": "npm run build:lib && npm run build:umd", 21 | "prebuild": "rm -rf dist & rm -rf lib & rm -rf esm", 22 | "prepublishOnly": "npm run build", 23 | "gh": "gh-pages -d dist" 24 | }, 25 | "main": "lib/index.js", 26 | "module": "esm/index.js", 27 | "typings": "types/index.d.ts", 28 | "files": [ 29 | "dist", 30 | "esm", 31 | "lib", 32 | "types", 33 | "demo" 34 | ], 35 | "sideEffects": false, 36 | "dependencies": { 37 | "@babel/runtime": "^7.10.2" 38 | }, 39 | "devDependencies": { 40 | "@babel/core": "^7.10.2", 41 | "@babel/plugin-proposal-class-properties": "^7.10.1", 42 | "@babel/plugin-transform-runtime": "^7.10.1", 43 | "@babel/preset-env": "^7.10.2", 44 | "babel-eslint": "^10.1.0", 45 | "eslint": "^5.16.0", 46 | "eslint-config-airbnb-base": "^13.2.0", 47 | "eslint-plugin-import": "^2.21.2", 48 | "gh-pages": "^2.2.0", 49 | "rollup": "^1.32.1", 50 | "rollup-plugin-babel": "^4.4.0", 51 | "rollup-plugin-buble": "^0.19.8", 52 | "rollup-plugin-eslint": "^5.1.0", 53 | "rollup-plugin-fill-html": "^1.1.0", 54 | "rollup-plugin-livereload": "^1.3.0", 55 | "rollup-plugin-serve": "^1.0.1", 56 | "rollup-plugin-uglify": "^6.0.4" 57 | } 58 | } 59 | -------------------------------------------------------------------------------- /src/config.js: -------------------------------------------------------------------------------- 1 | export default { 2 | recordable: true, 3 | sampleRate: 16000, 4 | sampleBits: 16, 5 | bufferSize: 16384, 6 | }; 7 | -------------------------------------------------------------------------------- /src/enum.js: -------------------------------------------------------------------------------- 1 | export const RECORDER_STATE = { 2 | READY: 0, 3 | RECORDING: 1, 4 | }; 5 | 6 | export const ENCODE_TYPE = { 7 | RAW: 'raw', 8 | PCM: 'pcm', 9 | WAV: 'wav', 10 | }; 11 | -------------------------------------------------------------------------------- /src/index.js: -------------------------------------------------------------------------------- 1 | import { 2 | merge, 3 | compress, 4 | encodeToPCM, 5 | encodeToWAV, 6 | } from './tools'; 7 | import environmentCheck from './polyfill'; 8 | import DEFAULT_CONFIG from './config'; 9 | import { RECORDER_STATE, ENCODE_TYPE } from './enum'; 10 | 11 | class Recorderx { 12 | state = RECORDER_STATE.READY 13 | 14 | ctx = new (window.AudioContext || window.webkitAudioContext)() 15 | 16 | sampleRate = DEFAULT_CONFIG.sampleRate 17 | 18 | sampleBits = DEFAULT_CONFIG.sampleBits 19 | 20 | recordable = DEFAULT_CONFIG.recordable 21 | 22 | recorder = null 23 | 24 | source = null 25 | 26 | stream = null 27 | 28 | buffer = [] 29 | 30 | bufferSize = 0 31 | 32 | constructor ( 33 | { 34 | recordable = DEFAULT_CONFIG.recordable, 35 | bufferSize = DEFAULT_CONFIG.bufferSize, 36 | sampleRate = DEFAULT_CONFIG.sampleRate, 37 | sampleBits = DEFAULT_CONFIG.sampleBits, 38 | } = DEFAULT_CONFIG, 39 | ) { 40 | const { ctx } = this; 41 | const creator = ctx.createScriptProcessor || ctx.createJavaScriptNode; 42 | this.recorder = creator.call(ctx, bufferSize, 1, 1); 43 | this.recordable = recordable; 44 | this.sampleRate = sampleRate; 45 | this.sampleBits = sampleBits; 46 | } 47 | 48 | start (audioprocessCallback) { 49 | this.ctx.resume(); 50 | 51 | return new Promise((resolve, reject) => { 52 | navigator.mediaDevices 53 | .getUserMedia({ audio: true }) 54 | .then((stream) => { 55 | const { recorder } = this; 56 | const source = this.ctx.createMediaStreamSource(stream); 57 | 58 | this.stream = stream; 59 | this.source = source; 60 | 61 | recorder.onaudioprocess = (e) => { 62 | const channelData = e.inputBuffer.getChannelData(0); 63 | 64 | if (this.recordable) { 65 | this.buffer.push(channelData.slice(0)); 66 | this.bufferSize += channelData.length; 67 | } 68 | 69 | if (typeof audioprocessCallback === 'function') { 70 | audioprocessCallback(channelData); 71 | } 72 | }; 73 | 74 | source.connect(recorder); 75 | recorder.connect(this.ctx.destination); 76 | 77 | this.state = RECORDER_STATE.RECORDING; 78 | 79 | resolve(stream); 80 | }) 81 | .catch((error) => { 82 | reject(error); 83 | }); 84 | }); 85 | } 86 | 87 | pause () { 88 | this.stream.getAudioTracks()[0].stop(); 89 | this.recorder.disconnect(); 90 | this.source.disconnect(); 91 | this.ctx.suspend(); 92 | this.state = RECORDER_STATE.READY; 93 | } 94 | 95 | clear () { 96 | this.buffer = []; 97 | this.bufferSize = 0; 98 | } 99 | 100 | getRecord ({ 101 | encodeTo = ENCODE_TYPE.RAW, 102 | compressible = false, 103 | } = { 104 | encodeTo: ENCODE_TYPE.RAW, 105 | compressible: false, 106 | }) { 107 | if (this.recordable) { 108 | let buffer = merge(this.buffer, this.bufferSize); 109 | 110 | const inputSampleRate = this.ctx.sampleRate; 111 | compressible = compressible && (this.sampleRate < inputSampleRate); 112 | const outSampleRate = compressible ? this.sampleRate : inputSampleRate; 113 | 114 | if (compressible) { 115 | buffer = compress(buffer, inputSampleRate, outSampleRate); 116 | } 117 | 118 | switch (encodeTo) { 119 | case ENCODE_TYPE.RAW: 120 | return buffer; 121 | case ENCODE_TYPE.PCM: 122 | return encodeToPCM(buffer, this.sampleBits); 123 | case ENCODE_TYPE.WAV: 124 | return encodeToWAV(buffer, this.sampleBits, outSampleRate); 125 | default: 126 | throw new Error('Invalid parameter: "encodeTo" must be ENCODE_TYPE'); 127 | } 128 | } 129 | 130 | throw new Error('Configuration error: "recordable" must be set to true'); 131 | } 132 | } 133 | 134 | environmentCheck(); 135 | 136 | export const audioTools = { 137 | merge, 138 | compress, 139 | encodeToPCM, 140 | encodeToWAV, 141 | }; 142 | export { RECORDER_STATE, ENCODE_TYPE }; 143 | export default Recorderx; 144 | -------------------------------------------------------------------------------- /src/polyfill.js: -------------------------------------------------------------------------------- 1 | export default function environmentCheck () { 2 | if (window === undefined || navigator === undefined) { 3 | return; 4 | } 5 | 6 | if (navigator.mediaDevices === undefined) { 7 | navigator.mediaDevices = {}; 8 | } 9 | 10 | if (navigator.mediaDevices.getUserMedia === undefined) { 11 | navigator.mediaDevices.getUserMedia = (constraints) => { 12 | const getUserMedia = navigator.getUserMedia 13 | || navigator.webkitGetUserMedia 14 | || navigator.mozGetUserMedia 15 | || navigator.msGetUserMedia; 16 | 17 | if (!getUserMedia) { 18 | return Promise.reject( 19 | new Error('getUserMedia is not implemented in this environment'), 20 | ); 21 | } 22 | 23 | return new Promise((resolve, reject) => { 24 | getUserMedia.call(navigator, constraints, resolve, reject); 25 | }); 26 | }; 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /src/tools.js: -------------------------------------------------------------------------------- 1 | export function merge (bufferList, length) { 2 | const data = new Float32Array(length); 3 | 4 | for (let i = 0, offset = 0; i < bufferList.length; offset += bufferList[i].length, i += 1) { 5 | data.set(bufferList[i], offset); 6 | } 7 | 8 | return data; 9 | } 10 | 11 | export function compress (buffer, inputSampleRate, outputSampleRate) { 12 | if (inputSampleRate < outputSampleRate) { 13 | throw new Error('Invalid parameter: "inputSampleRate" must be greater than "outputSampleRate"'); 14 | } 15 | 16 | const bufferLength = buffer.length; 17 | inputSampleRate += 0.0; 18 | outputSampleRate += 0.0; 19 | const compression = inputSampleRate / outputSampleRate; 20 | const outLength = Math.ceil(bufferLength * outputSampleRate / inputSampleRate); 21 | const data = new Float32Array(outLength); 22 | 23 | let s = 0; 24 | for (let i = 0; i < outLength; i += 1) { 25 | data[i] = buffer[Math.floor(s)]; 26 | s += compression; 27 | } 28 | 29 | return data; 30 | } 31 | 32 | export function encodeToPCM (bytes, sampleBits) { 33 | if ([8, 16].indexOf(sampleBits) === -1) { 34 | throw new Error('Invalid parameter: "sampleBits" must be 8 or 16'); 35 | } 36 | 37 | const dataLength = bytes.length * (sampleBits / 8); 38 | const buffer = new ArrayBuffer(dataLength); 39 | const view = new DataView(buffer); 40 | 41 | for (let i = 0, offset = 0; i < bytes.length; i += 1, offset += sampleBits / 8) { 42 | const s = Math.max(-1, Math.min(1, bytes[i])); 43 | const val = s < 0 ? s * 0x8000 : s * 0x7fff; 44 | if (sampleBits === 8) { 45 | view.setInt8(offset, parseInt(255 / (65535 / (val + 32768)), 10), true); 46 | } else { 47 | view.setInt16(offset, val, true); 48 | } 49 | } 50 | 51 | return view.buffer; 52 | } 53 | 54 | export function encodeToWAV (bytes, sampleBits, sampleRate) { 55 | if ([8, 16].indexOf(sampleBits) === -1) { 56 | throw new Error('Invalid parameter: "sampleBits" must be 8 or 16'); 57 | } 58 | 59 | const dataLength = bytes.length * (sampleBits / 8); 60 | const buffer = new ArrayBuffer(44 + dataLength); 61 | const view = new DataView(buffer); 62 | const channelCount = 1; 63 | let offset = 0; 64 | 65 | const writeString = (str) => { 66 | for (let i = 0; i < str.length; i += 1) { 67 | view.setUint8(offset + i, str.charCodeAt(i)); 68 | } 69 | }; 70 | 71 | // WAV HEAD 72 | writeString('RIFF'); 73 | offset += 4; 74 | view.setUint32(offset, 36 + dataLength, true); 75 | offset += 4; 76 | writeString('WAVE'); 77 | offset += 4; 78 | writeString('fmt '); 79 | offset += 4; 80 | view.setUint32(offset, 16, true); 81 | offset += 4; 82 | view.setUint16(offset, 1, true); 83 | offset += 2; 84 | view.setUint16(offset, channelCount, true); 85 | offset += 2; 86 | view.setUint32(offset, sampleRate, true); 87 | offset += 4; 88 | view.setUint32(offset, channelCount * sampleRate * (sampleBits / 8), true); 89 | offset += 4; 90 | view.setUint16(offset, channelCount * (sampleBits / 8), true); 91 | offset += 2; 92 | view.setUint16(offset, sampleBits, true); 93 | offset += 2; 94 | writeString('data'); 95 | offset += 4; 96 | view.setUint32(offset, dataLength, true); 97 | offset += 4; 98 | 99 | // write PCM 100 | for (let i = 0; i < bytes.length; i += 1, offset += sampleBits / 8) { 101 | const s = Math.max(-1, Math.min(1, bytes[i])); 102 | const val = s < 0 ? s * 0x8000 : s * 0x7fff; 103 | 104 | if (sampleBits === 8) { 105 | view.setInt8(offset, parseInt(255 / (65535 / (val + 32768)), 10), true); 106 | } else { 107 | view.setInt16(offset, val, true); 108 | } 109 | } 110 | 111 | return new Blob([view], { type: 'audio/wav' }); 112 | } 113 | -------------------------------------------------------------------------------- /types/enum.d.ts: -------------------------------------------------------------------------------- 1 | /** 2 | * Recorder State. 3 | */ 4 | export enum RECORDER_STATE { 5 | READY, 6 | RECORDING 7 | } 8 | 9 | export enum ENCODE_TYPE { 10 | RAW = 'raw', 11 | PCM = 'pcm', 12 | WAV = 'wav' 13 | } 14 | -------------------------------------------------------------------------------- /types/index.d.ts: -------------------------------------------------------------------------------- 1 | import Recorderx, { RecorderxConstructorOptions } from './recorderx'; 2 | 3 | export { audioTools } from './tools'; 4 | 5 | export { RECORDER_STATE, ENCODE_TYPE } from './enum'; 6 | 7 | export { RecorderxConstructorOptions }; 8 | 9 | export default Recorderx; 10 | -------------------------------------------------------------------------------- /types/recorderx.d.ts: -------------------------------------------------------------------------------- 1 | import { RECORDER_STATE, ENCODE_TYPE } from './enum'; 2 | 3 | export interface RecorderxConstructorOptions { 4 | recordable?: boolean 5 | bufferSize?: number 6 | sampleRate?: number 7 | sampleBits?: number 8 | } 9 | 10 | export default class Recorderx { 11 | /** 12 | * Recorder State 13 | */ 14 | readonly state: RECORDER_STATE 15 | 16 | /** 17 | * AudioContext 18 | */ 19 | readonly ctx: AudioContext 20 | 21 | constructor ({ recordable, bufferSize, sampleRate, sampleBits }?: RecorderxConstructorOptions) 22 | 23 | /** 24 | * Start recording 25 | * @param callback Callback function for onaudioprocess event 26 | */ 27 | start (audioprocessCallback?: (data: Float32Array) => any): Promise 28 | 29 | /** 30 | * Pause recording. 31 | */ 32 | pause (): void 33 | 34 | /** 35 | * Clear recording buffer. 36 | */ 37 | clear (): void 38 | 39 | /** 40 | * Get RAW recording data. 41 | */ 42 | getRecord ({ encodeTo, compressible }?: { encodeTo?: ENCODE_TYPE.RAW, compressible?: boolean }): Float32Array 43 | 44 | /** 45 | * Get PCM recording data. 46 | */ 47 | getRecord ({ encodeTo, compressible }?: { encodeTo?: ENCODE_TYPE.PCM, compressible?: boolean }): ArrayBuffer 48 | 49 | /** 50 | * Get WAV recording data. 51 | */ 52 | getRecord ({ encodeTo, compressible }?: { encodeTo?: ENCODE_TYPE.WAV, compressible?: boolean }): Blob 53 | } 54 | -------------------------------------------------------------------------------- /types/tools.d.ts: -------------------------------------------------------------------------------- 1 | /** 2 | * Audio merge, compress and encode. 3 | */ 4 | export namespace audioTools { 5 | /** 6 | * Merge audio data. 7 | * @param bufferList 8 | * @param length 9 | */ 10 | function merge (bufferList: Array, length: number): Float32Array 11 | 12 | /** 13 | * Compression audio data. 14 | * @param buffer 15 | * @param inputSampleRate 16 | * @param outputSampleRate 17 | */ 18 | function compress (buffer: Float32Array, inputSampleRate: number, outputSampleRate: number): Float32Array 19 | 20 | /** 21 | * Convert RAW to PCM. 22 | * @param bytes 23 | * @param sampleBits 24 | */ 25 | function encodeToPCM (bytes: Float32Array, sampleBits: number): ArrayBuffer 26 | 27 | /** 28 | * Convert RAW to WAV. 29 | * @param bytes 30 | * @param sampleBits 31 | * @param sampleRate 32 | */ 33 | function encodeToWAV (bytes: Float32Array, sampleBits: number, sampleRate: number): Blob 34 | } 35 | -------------------------------------------------------------------------------- /types/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "strict": true, 4 | "lib": ["es2015", "dom"] 5 | }, 6 | "include": ["./*.ts"] 7 | } 8 | --------------------------------------------------------------------------------