├── .eslintrc.js ├── .github └── workflows │ ├── ci.yml │ └── npm-publish.yml ├── .gitignore ├── CHANGELOG.md ├── LICENSE ├── README.md ├── js-to-json-logic.d.ts ├── lib └── index.js ├── package-lock.json ├── package.json └── test └── index.js /.eslintrc.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | env: { 3 | commonjs: true, 4 | es6: true, 5 | node: true, 6 | mocha: true 7 | }, 8 | extends: [ 9 | 'standard' 10 | ], 11 | globals: { 12 | Atomics: 'readonly', 13 | SharedArrayBuffer: 'readonly' 14 | }, 15 | parserOptions: { 16 | ecmaVersion: 2018 17 | }, 18 | rules: { 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /.github/workflows/ci.yml: -------------------------------------------------------------------------------- 1 | name: build 2 | 3 | on: [push] 4 | 5 | jobs: 6 | build: 7 | runs-on: ubuntu-latest 8 | strategy: 9 | matrix: 10 | node: [12, 13] 11 | steps: 12 | - name: Clone Repo 13 | uses: actions/checkout@v1 14 | 15 | - name: Setup Node.js ${{ matrix.node }} 16 | uses: actions/setup-node@v1 17 | with: 18 | node-version: ${{ matrix.node }} 19 | 20 | - name: List Versions 21 | run: | 22 | node --version 23 | npm --version 24 | 25 | - name: Install Dependencies 26 | run: npm ci 27 | 28 | - name: Run Tests & Lint 29 | run: | 30 | npm run test 31 | npm run lint 32 | -------------------------------------------------------------------------------- /.github/workflows/npm-publish.yml: -------------------------------------------------------------------------------- 1 | name: publish 2 | 3 | on: 4 | release: 5 | types: [created] 6 | 7 | jobs: 8 | build: 9 | runs-on: ubuntu-latest 10 | steps: 11 | - uses: actions/checkout@v2 12 | - uses: actions/setup-node@v1 13 | with: 14 | node-version: 12 15 | - run: npm ci 16 | - run: npm test 17 | 18 | publish-npm: 19 | needs: build 20 | runs-on: ubuntu-latest 21 | steps: 22 | - uses: actions/checkout@v2 23 | - uses: actions/setup-node@v1 24 | with: 25 | node-version: 12 26 | registry-url: https://registry.npmjs.org/ 27 | - run: npm ci 28 | - run: npm publish 29 | env: 30 | NODE_AUTH_TOKEN: ${{secrets.NPM_AUTH_TOKEN}} 31 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # Logs 2 | logs 3 | *.log 4 | npm-debug.log* 5 | yarn-debug.log* 6 | yarn-error.log* 7 | lerna-debug.log* 8 | 9 | # Diagnostic reports (https://nodejs.org/api/report.html) 10 | report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json 11 | 12 | # Runtime data 13 | pids 14 | *.pid 15 | *.seed 16 | *.pid.lock 17 | 18 | # Directory for instrumented libs generated by jscoverage/JSCover 19 | lib-cov 20 | 21 | # Coverage directory used by tools like istanbul 22 | coverage 23 | *.lcov 24 | 25 | # nyc test coverage 26 | .nyc_output 27 | 28 | # Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files) 29 | .grunt 30 | 31 | # Bower dependency directory (https://bower.io/) 32 | bower_components 33 | 34 | # node-waf configuration 35 | .lock-wscript 36 | 37 | # Compiled binary addons (https://nodejs.org/api/addons.html) 38 | build/Release 39 | 40 | # Dependency directories 41 | node_modules/ 42 | jspm_packages/ 43 | 44 | # TypeScript v1 declaration files 45 | typings/ 46 | 47 | # TypeScript cache 48 | *.tsbuildinfo 49 | 50 | # Optional npm cache directory 51 | .npm 52 | 53 | # Optional eslint cache 54 | .eslintcache 55 | 56 | # Microbundle cache 57 | .rpt2_cache/ 58 | .rts2_cache_cjs/ 59 | .rts2_cache_es/ 60 | .rts2_cache_umd/ 61 | 62 | # Optional REPL history 63 | .node_repl_history 64 | 65 | # Output of 'npm pack' 66 | *.tgz 67 | 68 | # Yarn Integrity file 69 | .yarn-integrity 70 | 71 | # dotenv environment variables file 72 | .env 73 | .env.test 74 | 75 | # parcel-bundler cache (https://parceljs.org/) 76 | .cache 77 | 78 | # Next.js build output 79 | .next 80 | 81 | # Nuxt.js build / generate output 82 | .nuxt 83 | dist 84 | 85 | # Gatsby files 86 | .cache/ 87 | # Comment in the public line in if your project uses Gatsby and not Next.js 88 | # https://nextjs.org/blog/next-9-1#public-directory-support 89 | # public 90 | 91 | # vuepress build output 92 | .vuepress/dist 93 | 94 | # Serverless directories 95 | .serverless/ 96 | 97 | # FuseBox cache 98 | .fusebox/ 99 | 100 | # DynamoDB Local files 101 | .dynamodb/ 102 | 103 | # TernJS port file 104 | .tern-port 105 | 106 | # Stores VSCode versions used for testing VSCode extensions 107 | .vscode-test 108 | -------------------------------------------------------------------------------- /CHANGELOG.md: -------------------------------------------------------------------------------- 1 | # Changelog 2 | 3 | All notable changes to this library will be documented in this file. 4 | 5 | ## 0.1.1 - 2020-07-02 6 | 7 | ### 🚨 Breaking Changes 8 | 9 | - Throw errors instead of returning `{ parse_error: ... }` objects 10 | - Migrate from `@babel/parser` to `meriyah` (all error messages changed slightly) 11 | - Return `null` when input is empty script 12 | - Ignore `'use strict'` and other directives 13 | 14 | ## 0.0.1 to 0.0.5 - 2002-01-12 15 | 16 | - Early Releases 17 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2020 Kristian Muñiz 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # JS to JSONLogic 2 | 3 | [![npm](https://img.shields.io/npm/v/js-to-json-logic.svg?style=flat-square)](https://npm.im/js-to-json-logic) [![License:MIT](https://img.shields.io/badge/license-MIT-blue.svg?style=flat-square)](http://opensource.org/licenses/MIT) [![GitHub Workflow Status](https://img.shields.io/github/workflow/status/krismuniz/js-to-json-logic/build?logo=github&logoColor=white&style=flat-square)](https://github.com/krismuniz/js-to-json-logic/actions?query=workflow%3Abuild) ![Type Declarations](https://img.shields.io/npm/types/js-to-json-logic.svg?style=flat-square) [![Try It on RunKit](https://img.shields.io/badge/Try_It_on-RunKit-f55fa6?labelColor=491757&style=flat-square)](https://npm.runkit.com/js-to-json-logic) 4 | 5 | Transform JavaScript expressions into [JSONLogic](http://jsonlogic.com) objects. For Node.js. 6 | 7 | > NOTICE: This module is still in beta! 8 | 9 | ### Installing 10 | 11 | ```shell 12 | npm install --save js-to-json-logic 13 | ``` 14 | 15 | ### Usage 16 | 17 | ```js 18 | const transformJS = require("js-to-json-logic"); 19 | 20 | transformJS('temp < 110 && pie.filling === "apple"'); 21 | ``` 22 | 23 | The `transformJS` function returns a JavaScript object, which can be stringified as a JSON and look like this: 24 | 25 | ```json 26 | { 27 | "and": [ 28 | { 29 | "<": [ 30 | { 31 | "var": "temp" 32 | }, 33 | 110 34 | ] 35 | }, 36 | { 37 | "===": [ 38 | { 39 | "var": "pie.filling" 40 | }, 41 | "apple" 42 | ] 43 | } 44 | ] 45 | } 46 | ``` 47 | 48 | ### How it Works 49 | 50 | To parse input code, this module uses `@babel/parser` to parse JavaScript code into an [Abstract Syntax Tree (AST)](https://en.wikipedia.org/wiki/Abstract_syntax_tree). The tree is then transformed into a JSONLogic object. 51 | 52 | Said object is can then be used with the [`json-logic-js`](https://npmjs.com/package/json-logic-js) module to apply the interpreted rules to any type of data. [Learn More](http://jsonlogic.com) 53 | 54 | ### Supported JavaScript Syntax 55 | 56 | | expression | support | examples | 57 | | ------------------------------ | ------- | -------------------------------------------------------- | 58 | | Boolean Literals | full | `true`, `false` | 59 | | String Literals | full | `"banana"`, `"hello world"` | 60 | | Template Literals | full | \`hello, \${first_name}\` | 61 | | Numeric Literals | full | `1`, `2.04`, `-10292.64`, `0b01011010`, `0xFF00FF`, etc. | 62 | | Object Expressions / Literals | full | `({ a: [1, false, 'string'], b: false, d: 'hello' })` | 63 | | Array Expressions | full | `[1, 2, 3]` | 64 | | Spread Operator in Arrays | full | `[1, 2, ...myArr]` | 65 | | Null Literals | full | `null` | 66 | | Identifiers (variables) | full | `myVar`, `deep.property` | 67 | | Comparison Expressions | full | `a > b`, `a < b`, `a <= b`, `a === b`, `a !== b`, etc. | 68 | | Arithmetic Operators | full | `a + b`, `a * b`, `a - b`, `a / b`, `a % b` | 69 | | Call Expressions | full | `myFunction(a, b, c)` | 70 | | Unary Expressions | full | `!cond`, `!!cond`, `-var`, `+var` | 71 | | Conditional (Ternary) Operator | full | `condition ? a : b` | 72 | | Regex Literal | limited | `/[^@]+@[^\.]+\..+/gi` | 73 | | If Statements | limited | `if (condA) { a } else if (condB) { b } else { c }` | 74 | | Call Expressions with Callback | limited | `map(arr, x => x + 1)` | 75 | | Arrow Functions | limited | `x => x + 1`, `(a, b) => a + b` | 76 | 77 | Notes: 78 | 79 | - Regex Literals: are not supported by the JSON spec. To account for this, they are converted into an array of strings. The first element of the array is the pattern, the second one contains the flags. Example: `[ "\d\d\d\d", "gi" ]` 80 | 81 | - If Statements: Multi-line consequentials (block statements in if statements) are not supported. Also, implicit return will always apply. 82 | 83 | - Call Expressions with Callback: Only arrow functions are allowed as callbacks in call expressions. 84 | 85 | - Arrow Functions: arrow functions can only be single-line expressions or have a one-line block statement 86 | 87 | - If a specific syntactic JS feature is not specified in the table above, it's likely that it isn't supported. If you have an idea on how to support said feature, feel free to file a GitHub Issue. 88 | 89 | ### In Plans to Support 90 | 91 | - Optional Chaining 92 | - Nullish Coalescing 93 | 94 | ### Unsupported Syntax 95 | 96 | The following syntactic features are not supported by this module. 97 | 98 | - Class Declarations 99 | - Private name expressions `#myPrivateProperty` 100 | - Update Expressions (`i++`, `i--`, etc.) 101 | - Assignment Expressions 102 | - Tagged Template Expressions 103 | - Function Declaration 104 | - While Loops 105 | - For Loops 106 | - Multi-Line Block Statements 107 | - `new` operator 108 | - Destructuring assignment 109 | - Rest operator 110 | - Spread operator (although it works within array expressions) 111 | 112 | ### Contributing 113 | 114 | #### Bug Reports & Feature Requests 115 | 116 | Something does not work as expected or perhaps you think this project _needs_ a feature? Please open an issue using GitHub [issue tracker](https://github.com/krismuniz/js-to-json-logic/issues/new). 117 | 118 | Make sure that an issue pointing out your specific problem does not exist already. Please be as specific and straightforward as possible. 119 | 120 | #### Pull Requests 121 | 122 | Pull Requests (PRs) are welcome! You should follow the [same basic stylistic conventions](http://standardjs.com/rules.html) as the original code. 123 | 124 | Make sure that a pull request solving your specific problem does not exist already. Your changes must be concise and focus on solving a discrete problem. 125 | 126 | ### License 127 | 128 | [The MIT License (MIT)](/LICENSE) 129 | 130 | Copyright (c) 2020 [Kristian Muñiz](https://www.krismuniz.com) 131 | -------------------------------------------------------------------------------- /js-to-json-logic.d.ts: -------------------------------------------------------------------------------- 1 | export default function transformJS (code: string): any 2 | -------------------------------------------------------------------------------- /lib/index.js: -------------------------------------------------------------------------------- 1 | const { parseScript: parse } = require('meriyah') 2 | 3 | const processOp = (operator) => { 4 | switch (operator) { 5 | case '||': 6 | return 'or' 7 | case '&&': 8 | return 'and' 9 | default: 10 | return operator 11 | } 12 | } 13 | 14 | const replaceVariable = (name) => (rule) => { 15 | const entries = Object.entries(rule) 16 | 17 | if (!entries.length) return rule 18 | 19 | for (const [key, value] of Object.entries(rule)) { 20 | if (key === 'var') return value === name ? { var: '' } : { [key]: value } 21 | 22 | if (Array.isArray(value)) { 23 | return { [key]: value.map(replaceVariable(name)) } 24 | } else { 25 | return rule 26 | } 27 | } 28 | } 29 | 30 | function processError ({ loc, at }, message) { 31 | const error = new Error(message) 32 | error.at = at || loc 33 | throw error 34 | } 35 | 36 | function processNode (node, valueOnly = false) { 37 | if (!node) return null 38 | 39 | switch (node.type) { 40 | case 'Program': { 41 | return node.body.length > 1 42 | ? processError(node, 'Only one expression statement allowed.') 43 | : processNode(node.body[0]) 44 | } 45 | 46 | case 'TemplateLiteral': { 47 | const nodes = [] 48 | const expressions = node.expressions 49 | 50 | let index = 0 51 | for (const elem of (node.quasis)) { 52 | if (elem.value.cooked) { 53 | nodes.push(elem.value.cooked) 54 | } 55 | 56 | if (index < expressions.length) { 57 | const expr = expressions[index++] 58 | nodes.push(processNode(expr)) 59 | } 60 | } 61 | 62 | if (nodes.length === 1) return nodes[0] 63 | 64 | return { 65 | cat: nodes 66 | } 67 | } 68 | 69 | case 'Literal': { 70 | if (node.value instanceof RegExp) { 71 | return [node.value.source, node.value.flags] 72 | } 73 | 74 | return node.value 75 | } 76 | 77 | case 'SpreadElement': { 78 | return processNode(node.argument) 79 | } 80 | 81 | case 'ArrayExpression': { 82 | // handle spread operators [1, 2, ...myArray] 83 | if (node.elements.some((node) => node.type === 'SpreadElement')) { 84 | return { 85 | merge: [ 86 | ...node.elements.map((node) => processNode(node)) 87 | ] 88 | } 89 | } 90 | 91 | return node.elements.map((node) => processNode(node)) 92 | } 93 | 94 | case 'ObjectExpression': { 95 | const result = {} 96 | for (const prop of node.properties) { 97 | if (prop.type === 'SpreadElement') continue 98 | result[processNode(prop.key, true)] = processNode(prop.value) 99 | } 100 | return result 101 | } 102 | 103 | case 'Identifier': { 104 | return node.name === 'undefined' 105 | ? null 106 | : (valueOnly ? node.name : { var: node.name }) 107 | } 108 | 109 | case 'ExpressionStatement': { 110 | return processNode(node.expression) 111 | } 112 | 113 | case 'BlockStatement': { 114 | return node.body.length > 1 115 | ? processError(node, 'Block statements can only have one expression statement.') 116 | : processNode(node.body[0]) 117 | } 118 | 119 | case 'CallExpression': { 120 | const key = node.callee.type !== 'Identifier' ? processNode(node.callee, true) : node.callee.name 121 | 122 | return { 123 | [key]: node.arguments.map((node) => processNode(node)) 124 | } 125 | } 126 | 127 | case 'LogicalExpression': 128 | case 'BinaryExpression': { 129 | return { 130 | [processOp(node.operator)]: [processNode(node.left), processNode(node.right)] 131 | } 132 | } 133 | 134 | case 'UnaryExpression': { 135 | if (node.operator === '!' && node.argument.operator === '!') { 136 | return { 137 | '!!': [processNode(node.argument.argument)] 138 | } 139 | } 140 | 141 | if (node.operator === '-' && typeof node.argument.value === 'number') { 142 | return node.argument.value * -1 143 | } 144 | 145 | return { 146 | [node.operator]: [processNode(node.argument)] 147 | } 148 | } 149 | 150 | case 'ConditionalExpression': { 151 | return { 152 | if: [ 153 | processNode(node.test), 154 | processNode(node.consequent), 155 | processNode(node.alternate) 156 | ] 157 | } 158 | } 159 | case 'MemberExpression': { 160 | const object = node.object.type !== 'Identifier' ? processNode(node.object, true) : node.object.name 161 | const property = node.property.type !== 'Identifier' 162 | ? processNode(node.property, true) 163 | : node.property.name 164 | 165 | const value = `${object}.${property}` 166 | 167 | return valueOnly ? value : { var: value } 168 | } 169 | 170 | case 'IfStatement': { 171 | return { 172 | if: [ 173 | processNode(node.test), 174 | processNode(node.consequent), 175 | node.alternate 176 | ? processNode(node.alternate) 177 | : undefined 178 | ].filter(Boolean) 179 | } 180 | } 181 | 182 | case 'ArrowFunctionExpression': { 183 | if (node.body.type === 'BlockStatement' && node.body.body.length > 1) { 184 | return processError(node, 'Only one-line arrow functions with implicit return are supported.') 185 | } 186 | 187 | const params = node.params.map((node) => processNode(node)) 188 | const body = processNode(node.body) 189 | 190 | return !params.length || params.length > 1 191 | ? body 192 | : replaceVariable(params[0].var)(body) 193 | } 194 | 195 | case 'ReturnStatement': { 196 | return processNode(node.argument) 197 | } 198 | 199 | /** unsuported features */ 200 | case 'UpdateExpression': { 201 | return processError(node, 'Update expressions (x++, ++x, x--, --x, etc.) are not supported.') 202 | } 203 | case 'TaggedTemplateExpression': { 204 | return processError(node, 'Tagged template expressions are not supported.') 205 | } 206 | case 'NewExpression': { 207 | return processError(node, 'Expressions that use the `new` keyword are not supported.') 208 | } 209 | case 'ClassDeclaration': { 210 | return processError(node, 'Classes are not supported.') 211 | } 212 | case 'FunctionDeclaration': { 213 | return processError(node, 'Function declarations are not supported.') 214 | } 215 | case 'WhileStatement': { 216 | return processError(node, 'While-loops are not supported.') 217 | } 218 | case 'ForStatement': { 219 | return processError(node, 'For-loops are not supported.') 220 | } 221 | case 'SwitchStatement': { 222 | return processError(node, 'Switch statements are not supported.') 223 | } 224 | case 'VariableDeclaration': { 225 | return processError(node, 'Variable (var, let, const) declarations are not supported.') 226 | } 227 | case 'AssignmentExpression': { 228 | return processError(node, 'Assignments not supported.') 229 | } 230 | case 'PrivateName': { 231 | return processError(node, 'Private names are not supported. Unexpected character \'#\'') 232 | } 233 | /** catch other unsupported features */ 234 | default: { 235 | return processError(node, `Invalid node '${node.type}'. Not supported.`) 236 | } 237 | } 238 | } 239 | 240 | const transformJS = (code) => { 241 | try { 242 | return processNode( 243 | parse(code, { 244 | loc: true, 245 | next: true, 246 | module: false, 247 | impliedStrict: true, 248 | directives: false 249 | }) 250 | ) 251 | } catch (e) { 252 | return processError({ 253 | at: e.loc 254 | ? ({ 255 | start: { 256 | line: e.loc.line, 257 | column: e.loc.column 258 | }, 259 | end: { 260 | line: e.loc.line, 261 | column: e.loc.column 262 | } 263 | }) 264 | : e.at 265 | }, `Could not parse code. ${e.message}`) 266 | } 267 | } 268 | 269 | module.exports = transformJS 270 | -------------------------------------------------------------------------------- /package-lock.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "js-to-json-logic", 3 | "version": "0.1.3", 4 | "lockfileVersion": 1, 5 | "requires": true, 6 | "dependencies": { 7 | "@babel/code-frame": { 8 | "version": "7.10.4", 9 | "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.10.4.tgz", 10 | "integrity": "sha512-vG6SvB6oYEhvgisZNFRmRCUkLz11c7rp+tbNTynGqc6mS1d5ATd/sGyV6W0KZZnXRKMTzZDRgQT3Ou9jhpAfUg==", 11 | "dev": true, 12 | "requires": { 13 | "@babel/highlight": "^7.10.4" 14 | } 15 | }, 16 | "@babel/core": { 17 | "version": "7.10.4", 18 | "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.10.4.tgz", 19 | "integrity": "sha512-3A0tS0HWpy4XujGc7QtOIHTeNwUgWaZc/WuS5YQrfhU67jnVmsD6OGPc1AKHH0LJHQICGncy3+YUjIhVlfDdcA==", 20 | "dev": true, 21 | "requires": { 22 | "@babel/code-frame": "^7.10.4", 23 | "@babel/generator": "^7.10.4", 24 | "@babel/helper-module-transforms": "^7.10.4", 25 | "@babel/helpers": "^7.10.4", 26 | "@babel/parser": "^7.10.4", 27 | "@babel/template": "^7.10.4", 28 | "@babel/traverse": "^7.10.4", 29 | "@babel/types": "^7.10.4", 30 | "convert-source-map": "^1.7.0", 31 | "debug": "^4.1.0", 32 | "gensync": "^1.0.0-beta.1", 33 | "json5": "^2.1.2", 34 | "lodash": "^4.17.13", 35 | "resolve": "^1.3.2", 36 | "semver": "^5.4.1", 37 | "source-map": "^0.5.0" 38 | } 39 | }, 40 | "@babel/generator": { 41 | "version": "7.10.4", 42 | "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.10.4.tgz", 43 | "integrity": "sha512-toLIHUIAgcQygFZRAQcsLQV3CBuX6yOIru1kJk/qqqvcRmZrYe6WavZTSG+bB8MxhnL9YPf+pKQfuiP161q7ng==", 44 | "dev": true, 45 | "requires": { 46 | "@babel/types": "^7.10.4", 47 | "jsesc": "^2.5.1", 48 | "lodash": "^4.17.13", 49 | "source-map": "^0.5.0" 50 | } 51 | }, 52 | "@babel/helper-function-name": { 53 | "version": "7.10.4", 54 | "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.10.4.tgz", 55 | "integrity": "sha512-YdaSyz1n8gY44EmN7x44zBn9zQ1Ry2Y+3GTA+3vH6Mizke1Vw0aWDM66FOYEPw8//qKkmqOckrGgTYa+6sceqQ==", 56 | "dev": true, 57 | "requires": { 58 | "@babel/helper-get-function-arity": "^7.10.4", 59 | "@babel/template": "^7.10.4", 60 | "@babel/types": "^7.10.4" 61 | } 62 | }, 63 | "@babel/helper-get-function-arity": { 64 | "version": "7.10.4", 65 | "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.10.4.tgz", 66 | "integrity": "sha512-EkN3YDB+SRDgiIUnNgcmiD361ti+AVbL3f3Henf6dqqUyr5dMsorno0lJWJuLhDhkI5sYEpgj6y9kB8AOU1I2A==", 67 | "dev": true, 68 | "requires": { 69 | "@babel/types": "^7.10.4" 70 | } 71 | }, 72 | "@babel/helper-member-expression-to-functions": { 73 | "version": "7.10.4", 74 | "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.10.4.tgz", 75 | "integrity": "sha512-m5j85pK/KZhuSdM/8cHUABQTAslV47OjfIB9Cc7P+PvlAoBzdb79BGNfw8RhT5Mq3p+xGd0ZfAKixbrUZx0C7A==", 76 | "dev": true, 77 | "requires": { 78 | "@babel/types": "^7.10.4" 79 | } 80 | }, 81 | "@babel/helper-module-imports": { 82 | "version": "7.10.4", 83 | "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.10.4.tgz", 84 | "integrity": "sha512-nEQJHqYavI217oD9+s5MUBzk6x1IlvoS9WTPfgG43CbMEeStE0v+r+TucWdx8KFGowPGvyOkDT9+7DHedIDnVw==", 85 | "dev": true, 86 | "requires": { 87 | "@babel/types": "^7.10.4" 88 | } 89 | }, 90 | "@babel/helper-module-transforms": { 91 | "version": "7.10.4", 92 | "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.10.4.tgz", 93 | "integrity": "sha512-Er2FQX0oa3nV7eM1o0tNCTx7izmQtwAQsIiaLRWtavAAEcskb0XJ5OjJbVrYXWOTr8om921Scabn4/tzlx7j1Q==", 94 | "dev": true, 95 | "requires": { 96 | "@babel/helper-module-imports": "^7.10.4", 97 | "@babel/helper-replace-supers": "^7.10.4", 98 | "@babel/helper-simple-access": "^7.10.4", 99 | "@babel/helper-split-export-declaration": "^7.10.4", 100 | "@babel/template": "^7.10.4", 101 | "@babel/types": "^7.10.4", 102 | "lodash": "^4.17.13" 103 | } 104 | }, 105 | "@babel/helper-optimise-call-expression": { 106 | "version": "7.10.4", 107 | "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.10.4.tgz", 108 | "integrity": "sha512-n3UGKY4VXwXThEiKrgRAoVPBMqeoPgHVqiHZOanAJCG9nQUL2pLRQirUzl0ioKclHGpGqRgIOkgcIJaIWLpygg==", 109 | "dev": true, 110 | "requires": { 111 | "@babel/types": "^7.10.4" 112 | } 113 | }, 114 | "@babel/helper-replace-supers": { 115 | "version": "7.10.4", 116 | "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.10.4.tgz", 117 | "integrity": "sha512-sPxZfFXocEymYTdVK1UNmFPBN+Hv5mJkLPsYWwGBxZAxaWfFu+xqp7b6qWD0yjNuNL2VKc6L5M18tOXUP7NU0A==", 118 | "dev": true, 119 | "requires": { 120 | "@babel/helper-member-expression-to-functions": "^7.10.4", 121 | "@babel/helper-optimise-call-expression": "^7.10.4", 122 | "@babel/traverse": "^7.10.4", 123 | "@babel/types": "^7.10.4" 124 | } 125 | }, 126 | "@babel/helper-simple-access": { 127 | "version": "7.10.4", 128 | "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.10.4.tgz", 129 | "integrity": "sha512-0fMy72ej/VEvF8ULmX6yb5MtHG4uH4Dbd6I/aHDb/JVg0bbivwt9Wg+h3uMvX+QSFtwr5MeItvazbrc4jtRAXw==", 130 | "dev": true, 131 | "requires": { 132 | "@babel/template": "^7.10.4", 133 | "@babel/types": "^7.10.4" 134 | } 135 | }, 136 | "@babel/helper-split-export-declaration": { 137 | "version": "7.10.4", 138 | "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.10.4.tgz", 139 | "integrity": "sha512-pySBTeoUff56fL5CBU2hWm9TesA4r/rOkI9DyJLvvgz09MB9YtfIYe3iBriVaYNaPe+Alua0vBIOVOLs2buWhg==", 140 | "dev": true, 141 | "requires": { 142 | "@babel/types": "^7.10.4" 143 | } 144 | }, 145 | "@babel/helper-validator-identifier": { 146 | "version": "7.10.4", 147 | "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz", 148 | "integrity": "sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw==", 149 | "dev": true 150 | }, 151 | "@babel/helpers": { 152 | "version": "7.10.4", 153 | "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.10.4.tgz", 154 | "integrity": "sha512-L2gX/XeUONeEbI78dXSrJzGdz4GQ+ZTA/aazfUsFaWjSe95kiCuOZ5HsXvkiw3iwF+mFHSRUfJU8t6YavocdXA==", 155 | "dev": true, 156 | "requires": { 157 | "@babel/template": "^7.10.4", 158 | "@babel/traverse": "^7.10.4", 159 | "@babel/types": "^7.10.4" 160 | } 161 | }, 162 | "@babel/highlight": { 163 | "version": "7.10.4", 164 | "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.10.4.tgz", 165 | "integrity": "sha512-i6rgnR/YgPEQzZZnbTHHuZdlE8qyoBNalD6F+q4vAFlcMEcqmkoG+mPqJYJCo63qPf74+Y1UZsl3l6f7/RIkmA==", 166 | "dev": true, 167 | "requires": { 168 | "@babel/helper-validator-identifier": "^7.10.4", 169 | "chalk": "^2.0.0", 170 | "js-tokens": "^4.0.0" 171 | }, 172 | "dependencies": { 173 | "chalk": { 174 | "version": "2.4.2", 175 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", 176 | "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", 177 | "dev": true, 178 | "requires": { 179 | "ansi-styles": "^3.2.1", 180 | "escape-string-regexp": "^1.0.5", 181 | "supports-color": "^5.3.0" 182 | } 183 | } 184 | } 185 | }, 186 | "@babel/parser": { 187 | "version": "7.10.4", 188 | "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.10.4.tgz", 189 | "integrity": "sha512-8jHII4hf+YVDsskTF6WuMB3X4Eh+PsUkC2ljq22so5rHvH+T8BzyL94VOdyFLNR8tBSVXOTbNHOKpR4TfRxVtA==", 190 | "dev": true 191 | }, 192 | "@babel/runtime-corejs3": { 193 | "version": "7.10.4", 194 | "resolved": "https://registry.npmjs.org/@babel/runtime-corejs3/-/runtime-corejs3-7.10.4.tgz", 195 | "integrity": "sha512-BFlgP2SoLO9HJX9WBwN67gHWMBhDX/eDz64Jajd6mR/UAUzqrNMm99d4qHnVaKscAElZoFiPv+JpR/Siud5lXw==", 196 | "dev": true, 197 | "requires": { 198 | "core-js-pure": "^3.0.0", 199 | "regenerator-runtime": "^0.13.4" 200 | } 201 | }, 202 | "@babel/template": { 203 | "version": "7.10.4", 204 | "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.10.4.tgz", 205 | "integrity": "sha512-ZCjD27cGJFUB6nmCB1Enki3r+L5kJveX9pq1SvAUKoICy6CZ9yD8xO086YXdYhvNjBdnekm4ZnaP5yC8Cs/1tA==", 206 | "dev": true, 207 | "requires": { 208 | "@babel/code-frame": "^7.10.4", 209 | "@babel/parser": "^7.10.4", 210 | "@babel/types": "^7.10.4" 211 | } 212 | }, 213 | "@babel/traverse": { 214 | "version": "7.10.4", 215 | "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.10.4.tgz", 216 | "integrity": "sha512-aSy7p5THgSYm4YyxNGz6jZpXf+Ok40QF3aA2LyIONkDHpAcJzDUqlCKXv6peqYUs2gmic849C/t2HKw2a2K20Q==", 217 | "dev": true, 218 | "requires": { 219 | "@babel/code-frame": "^7.10.4", 220 | "@babel/generator": "^7.10.4", 221 | "@babel/helper-function-name": "^7.10.4", 222 | "@babel/helper-split-export-declaration": "^7.10.4", 223 | "@babel/parser": "^7.10.4", 224 | "@babel/types": "^7.10.4", 225 | "debug": "^4.1.0", 226 | "globals": "^11.1.0", 227 | "lodash": "^4.17.13" 228 | }, 229 | "dependencies": { 230 | "globals": { 231 | "version": "11.12.0", 232 | "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", 233 | "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", 234 | "dev": true 235 | } 236 | } 237 | }, 238 | "@babel/types": { 239 | "version": "7.10.4", 240 | "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.10.4.tgz", 241 | "integrity": "sha512-UTCFOxC3FsFHb7lkRMVvgLzaRVamXuAs2Tz4wajva4WxtVY82eZeaUBtC2Zt95FU9TiznuC0Zk35tsim8jeVpg==", 242 | "dev": true, 243 | "requires": { 244 | "@babel/helper-validator-identifier": "^7.10.4", 245 | "lodash": "^4.17.13", 246 | "to-fast-properties": "^2.0.0" 247 | } 248 | }, 249 | "@istanbuljs/load-nyc-config": { 250 | "version": "1.1.0", 251 | "resolved": "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz", 252 | "integrity": "sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==", 253 | "dev": true, 254 | "requires": { 255 | "camelcase": "^5.3.1", 256 | "find-up": "^4.1.0", 257 | "get-package-type": "^0.1.0", 258 | "js-yaml": "^3.13.1", 259 | "resolve-from": "^5.0.0" 260 | }, 261 | "dependencies": { 262 | "resolve-from": { 263 | "version": "5.0.0", 264 | "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", 265 | "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", 266 | "dev": true 267 | } 268 | } 269 | }, 270 | "@istanbuljs/schema": { 271 | "version": "0.1.2", 272 | "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.2.tgz", 273 | "integrity": "sha512-tsAQNx32a8CoFhjhijUIhI4kccIAgmGhy8LZMZgGfmXcpMbPRUqn5LWmgRttILi6yeGmBJd2xsPkFMs0PzgPCw==", 274 | "dev": true 275 | }, 276 | "@types/color-name": { 277 | "version": "1.1.1", 278 | "resolved": "https://registry.npmjs.org/@types/color-name/-/color-name-1.1.1.tgz", 279 | "integrity": "sha512-rr+OQyAjxze7GgWrSaJwydHStIhHq2lvY3BOC2Mj7KnzI7XK0Uw1TOOdI9lDoajEbSWLiYgoo4f1R51erQfhPQ==", 280 | "dev": true 281 | }, 282 | "@types/json5": { 283 | "version": "0.0.29", 284 | "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz", 285 | "integrity": "sha1-7ihweulOEdK4J7y+UnC86n8+ce4=", 286 | "dev": true 287 | }, 288 | "@types/parse-json": { 289 | "version": "4.0.0", 290 | "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.0.tgz", 291 | "integrity": "sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==", 292 | "dev": true 293 | }, 294 | "acorn": { 295 | "version": "7.3.1", 296 | "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.3.1.tgz", 297 | "integrity": "sha512-tLc0wSnatxAQHVHUapaHdz72pi9KUyHjq5KyHjGg9Y8Ifdc79pTh2XvI6I1/chZbnM7QtNKzh66ooDogPZSleA==", 298 | "dev": true 299 | }, 300 | "acorn-jsx": { 301 | "version": "5.2.0", 302 | "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.2.0.tgz", 303 | "integrity": "sha512-HiUX/+K2YpkpJ+SzBffkM/AQ2YE03S0U1kjTLVpoJdhZMOWy8qvXVN9JdLqv2QsaQ6MPYQIuNmwD8zOiYUofLQ==", 304 | "dev": true 305 | }, 306 | "aggregate-error": { 307 | "version": "3.0.1", 308 | "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.0.1.tgz", 309 | "integrity": "sha512-quoaXsZ9/BLNae5yiNoUz+Nhkwz83GhWwtYFglcjEQB2NDHCIpApbqXxIFnm4Pq/Nvhrsq5sYJFyohrrxnTGAA==", 310 | "dev": true, 311 | "requires": { 312 | "clean-stack": "^2.0.0", 313 | "indent-string": "^4.0.0" 314 | } 315 | }, 316 | "ajv": { 317 | "version": "6.12.2", 318 | "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.2.tgz", 319 | "integrity": "sha512-k+V+hzjm5q/Mr8ef/1Y9goCmlsK4I6Sm74teeyGvFk1XrOsbsKLjEdrvny42CZ+a8sXbk8KWpY/bDwS+FLL2UQ==", 320 | "dev": true, 321 | "requires": { 322 | "fast-deep-equal": "^3.1.1", 323 | "fast-json-stable-stringify": "^2.0.0", 324 | "json-schema-traverse": "^0.4.1", 325 | "uri-js": "^4.2.2" 326 | } 327 | }, 328 | "ansi-colors": { 329 | "version": "4.1.1", 330 | "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz", 331 | "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==", 332 | "dev": true 333 | }, 334 | "ansi-regex": { 335 | "version": "5.0.0", 336 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", 337 | "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", 338 | "dev": true 339 | }, 340 | "ansi-styles": { 341 | "version": "3.2.1", 342 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", 343 | "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", 344 | "dev": true, 345 | "requires": { 346 | "color-convert": "^1.9.0" 347 | } 348 | }, 349 | "anymatch": { 350 | "version": "3.1.1", 351 | "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.1.tgz", 352 | "integrity": "sha512-mM8522psRCqzV+6LhomX5wgp25YVibjh8Wj23I5RPkPppSVSjyKD2A2mBJmWGa+KN7f2D6LNh9jkBCeyLktzjg==", 353 | "dev": true, 354 | "requires": { 355 | "normalize-path": "^3.0.0", 356 | "picomatch": "^2.0.4" 357 | } 358 | }, 359 | "append-transform": { 360 | "version": "2.0.0", 361 | "resolved": "https://registry.npmjs.org/append-transform/-/append-transform-2.0.0.tgz", 362 | "integrity": "sha512-7yeyCEurROLQJFv5Xj4lEGTy0borxepjFv1g22oAdqFu//SrAlDl1O1Nxx15SH1RoliUml6p8dwJW9jvZughhg==", 363 | "dev": true, 364 | "requires": { 365 | "default-require-extensions": "^3.0.0" 366 | } 367 | }, 368 | "archy": { 369 | "version": "1.0.0", 370 | "resolved": "https://registry.npmjs.org/archy/-/archy-1.0.0.tgz", 371 | "integrity": "sha1-+cjBN1fMHde8N5rHeyxipcKGjEA=", 372 | "dev": true 373 | }, 374 | "argparse": { 375 | "version": "1.0.10", 376 | "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", 377 | "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", 378 | "dev": true, 379 | "requires": { 380 | "sprintf-js": "~1.0.2" 381 | } 382 | }, 383 | "array-includes": { 384 | "version": "3.1.1", 385 | "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.1.tgz", 386 | "integrity": "sha512-c2VXaCHl7zPsvpkFsw4nxvFie4fh1ur9bpcgsVkIjqn0H/Xwdg+7fv3n2r/isyS8EBj5b06M9kHyZuIr4El6WQ==", 387 | "dev": true, 388 | "requires": { 389 | "define-properties": "^1.1.3", 390 | "es-abstract": "^1.17.0", 391 | "is-string": "^1.0.5" 392 | } 393 | }, 394 | "array.prototype.flat": { 395 | "version": "1.2.3", 396 | "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.2.3.tgz", 397 | "integrity": "sha512-gBlRZV0VSmfPIeWfuuy56XZMvbVfbEUnOXUvt3F/eUUUSyzlgLxhEX4YAEpxNAogRGehPSnfXyPtYyKAhkzQhQ==", 398 | "dev": true, 399 | "requires": { 400 | "define-properties": "^1.1.3", 401 | "es-abstract": "^1.17.0-next.1" 402 | } 403 | }, 404 | "array.prototype.map": { 405 | "version": "1.0.2", 406 | "resolved": "https://registry.npmjs.org/array.prototype.map/-/array.prototype.map-1.0.2.tgz", 407 | "integrity": "sha512-Az3OYxgsa1g7xDYp86l0nnN4bcmuEITGe1rbdEBVkrqkzMgDcbdQ2R7r41pNzti+4NMces3H8gMmuioZUilLgw==", 408 | "dev": true, 409 | "requires": { 410 | "define-properties": "^1.1.3", 411 | "es-abstract": "^1.17.0-next.1", 412 | "es-array-method-boxes-properly": "^1.0.0", 413 | "is-string": "^1.0.4" 414 | } 415 | }, 416 | "assertion-error": { 417 | "version": "1.1.0", 418 | "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-1.1.0.tgz", 419 | "integrity": "sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==", 420 | "dev": true 421 | }, 422 | "astral-regex": { 423 | "version": "1.0.0", 424 | "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-1.0.0.tgz", 425 | "integrity": "sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg==", 426 | "dev": true 427 | }, 428 | "balanced-match": { 429 | "version": "1.0.0", 430 | "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", 431 | "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", 432 | "dev": true 433 | }, 434 | "binary-extensions": { 435 | "version": "2.1.0", 436 | "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.1.0.tgz", 437 | "integrity": "sha512-1Yj8h9Q+QDF5FzhMs/c9+6UntbD5MkRfRwac8DoEm9ZfUBZ7tZ55YcGVAzEe4bXsdQHEk+s9S5wsOKVdZrw0tQ==", 438 | "dev": true 439 | }, 440 | "brace-expansion": { 441 | "version": "1.1.11", 442 | "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", 443 | "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", 444 | "dev": true, 445 | "requires": { 446 | "balanced-match": "^1.0.0", 447 | "concat-map": "0.0.1" 448 | } 449 | }, 450 | "braces": { 451 | "version": "3.0.2", 452 | "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", 453 | "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", 454 | "dev": true, 455 | "requires": { 456 | "fill-range": "^7.0.1" 457 | } 458 | }, 459 | "browser-stdout": { 460 | "version": "1.3.1", 461 | "resolved": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.1.tgz", 462 | "integrity": "sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==", 463 | "dev": true 464 | }, 465 | "caching-transform": { 466 | "version": "4.0.0", 467 | "resolved": "https://registry.npmjs.org/caching-transform/-/caching-transform-4.0.0.tgz", 468 | "integrity": "sha512-kpqOvwXnjjN44D89K5ccQC+RUrsy7jB/XLlRrx0D7/2HNcTPqzsb6XgYoErwko6QsV184CA2YgS1fxDiiDZMWA==", 469 | "dev": true, 470 | "requires": { 471 | "hasha": "^5.0.0", 472 | "make-dir": "^3.0.0", 473 | "package-hash": "^4.0.0", 474 | "write-file-atomic": "^3.0.0" 475 | } 476 | }, 477 | "callsites": { 478 | "version": "3.1.0", 479 | "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", 480 | "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", 481 | "dev": true 482 | }, 483 | "camelcase": { 484 | "version": "5.3.1", 485 | "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", 486 | "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", 487 | "dev": true 488 | }, 489 | "chai": { 490 | "version": "4.2.0", 491 | "resolved": "https://registry.npmjs.org/chai/-/chai-4.2.0.tgz", 492 | "integrity": "sha512-XQU3bhBukrOsQCuwZndwGcCVQHyZi53fQ6Ys1Fym7E4olpIqqZZhhoFJoaKVvV17lWQoXYwgWN2nF5crA8J2jw==", 493 | "dev": true, 494 | "requires": { 495 | "assertion-error": "^1.1.0", 496 | "check-error": "^1.0.2", 497 | "deep-eql": "^3.0.1", 498 | "get-func-name": "^2.0.0", 499 | "pathval": "^1.1.0", 500 | "type-detect": "^4.0.5" 501 | } 502 | }, 503 | "chalk": { 504 | "version": "4.1.0", 505 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", 506 | "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", 507 | "dev": true, 508 | "requires": { 509 | "ansi-styles": "^4.1.0", 510 | "supports-color": "^7.1.0" 511 | }, 512 | "dependencies": { 513 | "ansi-styles": { 514 | "version": "4.2.1", 515 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz", 516 | "integrity": "sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA==", 517 | "dev": true, 518 | "requires": { 519 | "@types/color-name": "^1.1.1", 520 | "color-convert": "^2.0.1" 521 | } 522 | }, 523 | "color-convert": { 524 | "version": "2.0.1", 525 | "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", 526 | "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", 527 | "dev": true, 528 | "requires": { 529 | "color-name": "~1.1.4" 530 | } 531 | }, 532 | "color-name": { 533 | "version": "1.1.4", 534 | "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", 535 | "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", 536 | "dev": true 537 | }, 538 | "has-flag": { 539 | "version": "4.0.0", 540 | "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", 541 | "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", 542 | "dev": true 543 | }, 544 | "supports-color": { 545 | "version": "7.1.0", 546 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.1.0.tgz", 547 | "integrity": "sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g==", 548 | "dev": true, 549 | "requires": { 550 | "has-flag": "^4.0.0" 551 | } 552 | } 553 | } 554 | }, 555 | "check-error": { 556 | "version": "1.0.2", 557 | "resolved": "https://registry.npmjs.org/check-error/-/check-error-1.0.2.tgz", 558 | "integrity": "sha1-V00xLt2Iu13YkS6Sht1sCu1KrII=", 559 | "dev": true 560 | }, 561 | "chokidar": { 562 | "version": "3.3.1", 563 | "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.3.1.tgz", 564 | "integrity": "sha512-4QYCEWOcK3OJrxwvyyAOxFuhpvOVCYkr33LPfFNBjAD/w3sEzWsp2BUOkI4l9bHvWioAd0rc6NlHUOEaWkTeqg==", 565 | "dev": true, 566 | "requires": { 567 | "anymatch": "~3.1.1", 568 | "braces": "~3.0.2", 569 | "fsevents": "~2.1.2", 570 | "glob-parent": "~5.1.0", 571 | "is-binary-path": "~2.1.0", 572 | "is-glob": "~4.0.1", 573 | "normalize-path": "~3.0.0", 574 | "readdirp": "~3.3.0" 575 | } 576 | }, 577 | "ci-info": { 578 | "version": "2.0.0", 579 | "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz", 580 | "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==", 581 | "dev": true 582 | }, 583 | "clean-stack": { 584 | "version": "2.2.0", 585 | "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", 586 | "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", 587 | "dev": true 588 | }, 589 | "cliui": { 590 | "version": "5.0.0", 591 | "resolved": "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz", 592 | "integrity": "sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==", 593 | "dev": true, 594 | "requires": { 595 | "string-width": "^3.1.0", 596 | "strip-ansi": "^5.2.0", 597 | "wrap-ansi": "^5.1.0" 598 | }, 599 | "dependencies": { 600 | "ansi-regex": { 601 | "version": "4.1.0", 602 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", 603 | "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", 604 | "dev": true 605 | }, 606 | "strip-ansi": { 607 | "version": "5.2.0", 608 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", 609 | "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", 610 | "dev": true, 611 | "requires": { 612 | "ansi-regex": "^4.1.0" 613 | } 614 | } 615 | } 616 | }, 617 | "color-convert": { 618 | "version": "1.9.3", 619 | "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", 620 | "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", 621 | "dev": true, 622 | "requires": { 623 | "color-name": "1.1.3" 624 | } 625 | }, 626 | "color-name": { 627 | "version": "1.1.3", 628 | "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", 629 | "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", 630 | "dev": true 631 | }, 632 | "commondir": { 633 | "version": "1.0.1", 634 | "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", 635 | "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=", 636 | "dev": true 637 | }, 638 | "compare-versions": { 639 | "version": "3.6.0", 640 | "resolved": "https://registry.npmjs.org/compare-versions/-/compare-versions-3.6.0.tgz", 641 | "integrity": "sha512-W6Af2Iw1z4CB7q4uU4hv646dW9GQuBM+YpC0UvUCWSD8w90SJjp+ujJuXaEMtAXBtSqGfMPuFOVn4/+FlaqfBA==", 642 | "dev": true 643 | }, 644 | "concat-map": { 645 | "version": "0.0.1", 646 | "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", 647 | "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", 648 | "dev": true 649 | }, 650 | "contains-path": { 651 | "version": "0.1.0", 652 | "resolved": "https://registry.npmjs.org/contains-path/-/contains-path-0.1.0.tgz", 653 | "integrity": "sha1-/ozxhP9mcLa67wGp1IYaXL7EEgo=", 654 | "dev": true 655 | }, 656 | "convert-source-map": { 657 | "version": "1.7.0", 658 | "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.7.0.tgz", 659 | "integrity": "sha512-4FJkXzKXEDB1snCFZlLP4gpC3JILicCpGbzG9f9G7tGqGCzETQ2hWPrcinA9oU4wtf2biUaEH5065UnMeR33oA==", 660 | "dev": true, 661 | "requires": { 662 | "safe-buffer": "~5.1.1" 663 | } 664 | }, 665 | "core-js-pure": { 666 | "version": "3.6.5", 667 | "resolved": "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.6.5.tgz", 668 | "integrity": "sha512-lacdXOimsiD0QyNf9BC/mxivNJ/ybBGJXQFKzRekp1WTHoVUWsUHEn+2T8GJAzzIhyOuXA+gOxCVN3l+5PLPUA==", 669 | "dev": true 670 | }, 671 | "cosmiconfig": { 672 | "version": "6.0.0", 673 | "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-6.0.0.tgz", 674 | "integrity": "sha512-xb3ZL6+L8b9JLLCx3ZdoZy4+2ECphCMo2PwqgP1tlfVq6M6YReyzBJtvWWtbDSpNr9hn96pkCiZqUcFEc+54Qg==", 675 | "dev": true, 676 | "requires": { 677 | "@types/parse-json": "^4.0.0", 678 | "import-fresh": "^3.1.0", 679 | "parse-json": "^5.0.0", 680 | "path-type": "^4.0.0", 681 | "yaml": "^1.7.2" 682 | }, 683 | "dependencies": { 684 | "parse-json": { 685 | "version": "5.0.0", 686 | "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.0.0.tgz", 687 | "integrity": "sha512-OOY5b7PAEFV0E2Fir1KOkxchnZNCdowAJgQ5NuxjpBKTRP3pQhwkrkxqQjeoKJ+fO7bCpmIZaogI4eZGDMEGOw==", 688 | "dev": true, 689 | "requires": { 690 | "@babel/code-frame": "^7.0.0", 691 | "error-ex": "^1.3.1", 692 | "json-parse-better-errors": "^1.0.1", 693 | "lines-and-columns": "^1.1.6" 694 | } 695 | }, 696 | "path-type": { 697 | "version": "4.0.0", 698 | "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", 699 | "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", 700 | "dev": true 701 | } 702 | } 703 | }, 704 | "cross-spawn": { 705 | "version": "7.0.3", 706 | "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", 707 | "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", 708 | "dev": true, 709 | "requires": { 710 | "path-key": "^3.1.0", 711 | "shebang-command": "^2.0.0", 712 | "which": "^2.0.1" 713 | } 714 | }, 715 | "debug": { 716 | "version": "4.1.1", 717 | "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", 718 | "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", 719 | "dev": true, 720 | "requires": { 721 | "ms": "^2.1.1" 722 | } 723 | }, 724 | "decamelize": { 725 | "version": "1.2.0", 726 | "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", 727 | "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", 728 | "dev": true 729 | }, 730 | "deep-eql": { 731 | "version": "3.0.1", 732 | "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-3.0.1.tgz", 733 | "integrity": "sha512-+QeIQyN5ZuO+3Uk5DYh6/1eKO0m0YmJFGNmFHGACpf1ClL1nmlV/p4gNgbl2pJGxgXb4faqo6UE+M5ACEMyVcw==", 734 | "dev": true, 735 | "requires": { 736 | "type-detect": "^4.0.0" 737 | } 738 | }, 739 | "deep-is": { 740 | "version": "0.1.3", 741 | "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz", 742 | "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=", 743 | "dev": true 744 | }, 745 | "default-require-extensions": { 746 | "version": "3.0.0", 747 | "resolved": "https://registry.npmjs.org/default-require-extensions/-/default-require-extensions-3.0.0.tgz", 748 | "integrity": "sha512-ek6DpXq/SCpvjhpFsLFRVtIxJCRw6fUR42lYMVZuUMK7n8eMz4Uh5clckdBjEpLhn/gEBZo7hDJnJcwdKLKQjg==", 749 | "dev": true, 750 | "requires": { 751 | "strip-bom": "^4.0.0" 752 | } 753 | }, 754 | "define-properties": { 755 | "version": "1.1.3", 756 | "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", 757 | "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", 758 | "dev": true, 759 | "requires": { 760 | "object-keys": "^1.0.12" 761 | } 762 | }, 763 | "diff": { 764 | "version": "4.0.2", 765 | "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", 766 | "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==", 767 | "dev": true 768 | }, 769 | "doctrine": { 770 | "version": "3.0.0", 771 | "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", 772 | "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", 773 | "dev": true, 774 | "requires": { 775 | "esutils": "^2.0.2" 776 | } 777 | }, 778 | "emoji-regex": { 779 | "version": "7.0.3", 780 | "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", 781 | "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==", 782 | "dev": true 783 | }, 784 | "enquirer": { 785 | "version": "2.3.6", 786 | "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.3.6.tgz", 787 | "integrity": "sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==", 788 | "dev": true, 789 | "requires": { 790 | "ansi-colors": "^4.1.1" 791 | } 792 | }, 793 | "error-ex": { 794 | "version": "1.3.2", 795 | "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", 796 | "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", 797 | "dev": true, 798 | "requires": { 799 | "is-arrayish": "^0.2.1" 800 | } 801 | }, 802 | "es-abstract": { 803 | "version": "1.17.0", 804 | "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.0.tgz", 805 | "integrity": "sha512-yYkE07YF+6SIBmg1MsJ9dlub5L48Ek7X0qz+c/CPCHS9EBXfESorzng4cJQjJW5/pB6vDF41u7F8vUhLVDqIug==", 806 | "dev": true, 807 | "requires": { 808 | "es-to-primitive": "^1.2.1", 809 | "function-bind": "^1.1.1", 810 | "has": "^1.0.3", 811 | "has-symbols": "^1.0.1", 812 | "is-callable": "^1.1.5", 813 | "is-regex": "^1.0.5", 814 | "object-inspect": "^1.7.0", 815 | "object-keys": "^1.1.1", 816 | "object.assign": "^4.1.0", 817 | "string.prototype.trimleft": "^2.1.1", 818 | "string.prototype.trimright": "^2.1.1" 819 | } 820 | }, 821 | "es-array-method-boxes-properly": { 822 | "version": "1.0.0", 823 | "resolved": "https://registry.npmjs.org/es-array-method-boxes-properly/-/es-array-method-boxes-properly-1.0.0.tgz", 824 | "integrity": "sha512-wd6JXUmyHmt8T5a2xreUwKcGPq6f1f+WwIJkijUqiGcJz1qqnZgP6XIK+QyIWU5lT7imeNxUll48bziG+TSYcA==", 825 | "dev": true 826 | }, 827 | "es-get-iterator": { 828 | "version": "1.1.0", 829 | "resolved": "https://registry.npmjs.org/es-get-iterator/-/es-get-iterator-1.1.0.tgz", 830 | "integrity": "sha512-UfrmHuWQlNMTs35e1ypnvikg6jCz3SK8v8ImvmDsh36fCVUR1MqoFDiyn0/k52C8NqO3YsO8Oe0azeesNuqSsQ==", 831 | "dev": true, 832 | "requires": { 833 | "es-abstract": "^1.17.4", 834 | "has-symbols": "^1.0.1", 835 | "is-arguments": "^1.0.4", 836 | "is-map": "^2.0.1", 837 | "is-set": "^2.0.1", 838 | "is-string": "^1.0.5", 839 | "isarray": "^2.0.5" 840 | }, 841 | "dependencies": { 842 | "es-abstract": { 843 | "version": "1.17.6", 844 | "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.6.tgz", 845 | "integrity": "sha512-Fr89bON3WFyUi5EvAeI48QTWX0AyekGgLA8H+c+7fbfCkJwRWRMLd8CQedNEyJuoYYhmtEqY92pgte1FAhBlhw==", 846 | "dev": true, 847 | "requires": { 848 | "es-to-primitive": "^1.2.1", 849 | "function-bind": "^1.1.1", 850 | "has": "^1.0.3", 851 | "has-symbols": "^1.0.1", 852 | "is-callable": "^1.2.0", 853 | "is-regex": "^1.1.0", 854 | "object-inspect": "^1.7.0", 855 | "object-keys": "^1.1.1", 856 | "object.assign": "^4.1.0", 857 | "string.prototype.trimend": "^1.0.1", 858 | "string.prototype.trimstart": "^1.0.1" 859 | } 860 | }, 861 | "is-callable": { 862 | "version": "1.2.0", 863 | "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.0.tgz", 864 | "integrity": "sha512-pyVD9AaGLxtg6srb2Ng6ynWJqkHU9bEM087AKck0w8QwDarTfNcpIYoU8x8Hv2Icm8u6kFJM18Dag8lyqGkviw==", 865 | "dev": true 866 | }, 867 | "is-regex": { 868 | "version": "1.1.0", 869 | "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.0.tgz", 870 | "integrity": "sha512-iI97M8KTWID2la5uYXlkbSDQIg4F6o1sYboZKKTDpnDQMLtUL86zxhgDet3Q2SriaYsyGqZ6Mn2SjbRKeLHdqw==", 871 | "dev": true, 872 | "requires": { 873 | "has-symbols": "^1.0.1" 874 | } 875 | }, 876 | "isarray": { 877 | "version": "2.0.5", 878 | "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", 879 | "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", 880 | "dev": true 881 | } 882 | } 883 | }, 884 | "es-to-primitive": { 885 | "version": "1.2.1", 886 | "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", 887 | "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", 888 | "dev": true, 889 | "requires": { 890 | "is-callable": "^1.1.4", 891 | "is-date-object": "^1.0.1", 892 | "is-symbol": "^1.0.2" 893 | } 894 | }, 895 | "es6-error": { 896 | "version": "4.1.1", 897 | "resolved": "https://registry.npmjs.org/es6-error/-/es6-error-4.1.1.tgz", 898 | "integrity": "sha512-Um/+FxMr9CISWh0bi5Zv0iOD+4cFh5qLeks1qhAopKVAJw3drgKbKySikp7wGhDL0HPeaja0P5ULZrxLkniUVg==", 899 | "dev": true 900 | }, 901 | "escape-string-regexp": { 902 | "version": "1.0.5", 903 | "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", 904 | "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", 905 | "dev": true 906 | }, 907 | "eslint": { 908 | "version": "7.3.1", 909 | "resolved": "https://registry.npmjs.org/eslint/-/eslint-7.3.1.tgz", 910 | "integrity": "sha512-cQC/xj9bhWUcyi/RuMbRtC3I0eW8MH0jhRELSvpKYkWep3C6YZ2OkvcvJVUeO6gcunABmzptbXBuDoXsjHmfTA==", 911 | "dev": true, 912 | "requires": { 913 | "@babel/code-frame": "^7.0.0", 914 | "ajv": "^6.10.0", 915 | "chalk": "^4.0.0", 916 | "cross-spawn": "^7.0.2", 917 | "debug": "^4.0.1", 918 | "doctrine": "^3.0.0", 919 | "enquirer": "^2.3.5", 920 | "eslint-scope": "^5.1.0", 921 | "eslint-utils": "^2.0.0", 922 | "eslint-visitor-keys": "^1.2.0", 923 | "espree": "^7.1.0", 924 | "esquery": "^1.2.0", 925 | "esutils": "^2.0.2", 926 | "file-entry-cache": "^5.0.1", 927 | "functional-red-black-tree": "^1.0.1", 928 | "glob-parent": "^5.0.0", 929 | "globals": "^12.1.0", 930 | "ignore": "^4.0.6", 931 | "import-fresh": "^3.0.0", 932 | "imurmurhash": "^0.1.4", 933 | "is-glob": "^4.0.0", 934 | "js-yaml": "^3.13.1", 935 | "json-stable-stringify-without-jsonify": "^1.0.1", 936 | "levn": "^0.4.1", 937 | "lodash": "^4.17.14", 938 | "minimatch": "^3.0.4", 939 | "natural-compare": "^1.4.0", 940 | "optionator": "^0.9.1", 941 | "progress": "^2.0.0", 942 | "regexpp": "^3.1.0", 943 | "semver": "^7.2.1", 944 | "strip-ansi": "^6.0.0", 945 | "strip-json-comments": "^3.1.0", 946 | "table": "^5.2.3", 947 | "text-table": "^0.2.0", 948 | "v8-compile-cache": "^2.0.3" 949 | }, 950 | "dependencies": { 951 | "eslint-visitor-keys": { 952 | "version": "1.3.0", 953 | "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", 954 | "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", 955 | "dev": true 956 | }, 957 | "semver": { 958 | "version": "7.3.2", 959 | "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.2.tgz", 960 | "integrity": "sha512-OrOb32TeeambH6UrhtShmF7CRDqhL6/5XpPNp2DuRH6+9QLw/orhp72j87v8Qa1ScDkvrrBNpZcDejAirJmfXQ==", 961 | "dev": true 962 | } 963 | } 964 | }, 965 | "eslint-config-standard": { 966 | "version": "14.1.0", 967 | "resolved": "https://registry.npmjs.org/eslint-config-standard/-/eslint-config-standard-14.1.0.tgz", 968 | "integrity": "sha512-EF6XkrrGVbvv8hL/kYa/m6vnvmUT+K82pJJc4JJVMM6+Qgqh0pnwprSxdduDLB9p/7bIxD+YV5O0wfb8lmcPbA==", 969 | "dev": true 970 | }, 971 | "eslint-import-resolver-node": { 972 | "version": "0.3.4", 973 | "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.4.tgz", 974 | "integrity": "sha512-ogtf+5AB/O+nM6DIeBUNr2fuT7ot9Qg/1harBfBtaP13ekEWFQEEMP94BCB7zaNW3gyY+8SHYF00rnqYwXKWOA==", 975 | "dev": true, 976 | "requires": { 977 | "debug": "^2.6.9", 978 | "resolve": "^1.13.1" 979 | }, 980 | "dependencies": { 981 | "debug": { 982 | "version": "2.6.9", 983 | "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", 984 | "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", 985 | "dev": true, 986 | "requires": { 987 | "ms": "2.0.0" 988 | } 989 | }, 990 | "ms": { 991 | "version": "2.0.0", 992 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", 993 | "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", 994 | "dev": true 995 | } 996 | } 997 | }, 998 | "eslint-module-utils": { 999 | "version": "2.6.0", 1000 | "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.6.0.tgz", 1001 | "integrity": "sha512-6j9xxegbqe8/kZY8cYpcp0xhbK0EgJlg3g9mib3/miLaExuuwc3n5UEfSnU6hWMbT0FAYVvDbL9RrRgpUeQIvA==", 1002 | "dev": true, 1003 | "requires": { 1004 | "debug": "^2.6.9", 1005 | "pkg-dir": "^2.0.0" 1006 | }, 1007 | "dependencies": { 1008 | "debug": { 1009 | "version": "2.6.9", 1010 | "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", 1011 | "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", 1012 | "dev": true, 1013 | "requires": { 1014 | "ms": "2.0.0" 1015 | } 1016 | }, 1017 | "find-up": { 1018 | "version": "2.1.0", 1019 | "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", 1020 | "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", 1021 | "dev": true, 1022 | "requires": { 1023 | "locate-path": "^2.0.0" 1024 | } 1025 | }, 1026 | "locate-path": { 1027 | "version": "2.0.0", 1028 | "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", 1029 | "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", 1030 | "dev": true, 1031 | "requires": { 1032 | "p-locate": "^2.0.0", 1033 | "path-exists": "^3.0.0" 1034 | } 1035 | }, 1036 | "ms": { 1037 | "version": "2.0.0", 1038 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", 1039 | "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", 1040 | "dev": true 1041 | }, 1042 | "p-limit": { 1043 | "version": "1.3.0", 1044 | "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", 1045 | "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", 1046 | "dev": true, 1047 | "requires": { 1048 | "p-try": "^1.0.0" 1049 | } 1050 | }, 1051 | "p-locate": { 1052 | "version": "2.0.0", 1053 | "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", 1054 | "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", 1055 | "dev": true, 1056 | "requires": { 1057 | "p-limit": "^1.1.0" 1058 | } 1059 | }, 1060 | "p-try": { 1061 | "version": "1.0.0", 1062 | "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", 1063 | "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=", 1064 | "dev": true 1065 | }, 1066 | "pkg-dir": { 1067 | "version": "2.0.0", 1068 | "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-2.0.0.tgz", 1069 | "integrity": "sha1-9tXREJ4Z1j7fQo4L1X4Sd3YVM0s=", 1070 | "dev": true, 1071 | "requires": { 1072 | "find-up": "^2.1.0" 1073 | } 1074 | } 1075 | } 1076 | }, 1077 | "eslint-plugin-es": { 1078 | "version": "3.0.0", 1079 | "resolved": "https://registry.npmjs.org/eslint-plugin-es/-/eslint-plugin-es-3.0.0.tgz", 1080 | "integrity": "sha512-6/Jb/J/ZvSebydwbBJO1R9E5ky7YeElfK56Veh7e4QGFHCXoIXGH9HhVz+ibJLM3XJ1XjP+T7rKBLUa/Y7eIng==", 1081 | "dev": true, 1082 | "requires": { 1083 | "eslint-utils": "^2.0.0", 1084 | "regexpp": "^3.0.0" 1085 | }, 1086 | "dependencies": { 1087 | "eslint-utils": { 1088 | "version": "2.0.0", 1089 | "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.0.0.tgz", 1090 | "integrity": "sha512-0HCPuJv+7Wv1bACm8y5/ECVfYdfsAm9xmVb7saeFlxjPYALefjhbYoCkBjPdPzGH8wWyTpAez82Fh3VKYEZ8OA==", 1091 | "dev": true, 1092 | "requires": { 1093 | "eslint-visitor-keys": "^1.1.0" 1094 | } 1095 | }, 1096 | "regexpp": { 1097 | "version": "3.0.0", 1098 | "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.0.0.tgz", 1099 | "integrity": "sha512-Z+hNr7RAVWxznLPuA7DIh8UNX1j9CDrUQxskw9IrBE1Dxue2lyXT+shqEIeLUjrokxIP8CMy1WkjgG3rTsd5/g==", 1100 | "dev": true 1101 | } 1102 | } 1103 | }, 1104 | "eslint-plugin-import": { 1105 | "version": "2.22.0", 1106 | "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.22.0.tgz", 1107 | "integrity": "sha512-66Fpf1Ln6aIS5Gr/55ts19eUuoDhAbZgnr6UxK5hbDx6l/QgQgx61AePq+BV4PP2uXQFClgMVzep5zZ94qqsxg==", 1108 | "dev": true, 1109 | "requires": { 1110 | "array-includes": "^3.1.1", 1111 | "array.prototype.flat": "^1.2.3", 1112 | "contains-path": "^0.1.0", 1113 | "debug": "^2.6.9", 1114 | "doctrine": "1.5.0", 1115 | "eslint-import-resolver-node": "^0.3.3", 1116 | "eslint-module-utils": "^2.6.0", 1117 | "has": "^1.0.3", 1118 | "minimatch": "^3.0.4", 1119 | "object.values": "^1.1.1", 1120 | "read-pkg-up": "^2.0.0", 1121 | "resolve": "^1.17.0", 1122 | "tsconfig-paths": "^3.9.0" 1123 | }, 1124 | "dependencies": { 1125 | "debug": { 1126 | "version": "2.6.9", 1127 | "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", 1128 | "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", 1129 | "dev": true, 1130 | "requires": { 1131 | "ms": "2.0.0" 1132 | } 1133 | }, 1134 | "doctrine": { 1135 | "version": "1.5.0", 1136 | "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-1.5.0.tgz", 1137 | "integrity": "sha1-N53Ocw9hZvds76TmcHoVmwLFpvo=", 1138 | "dev": true, 1139 | "requires": { 1140 | "esutils": "^2.0.2", 1141 | "isarray": "^1.0.0" 1142 | } 1143 | }, 1144 | "ms": { 1145 | "version": "2.0.0", 1146 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", 1147 | "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", 1148 | "dev": true 1149 | }, 1150 | "resolve": { 1151 | "version": "1.17.0", 1152 | "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.17.0.tgz", 1153 | "integrity": "sha512-ic+7JYiV8Vi2yzQGFWOkiZD5Z9z7O2Zhm9XMaTxdJExKasieFCr+yXZ/WmXsckHiKl12ar0y6XiXDx3m4RHn1w==", 1154 | "dev": true, 1155 | "requires": { 1156 | "path-parse": "^1.0.6" 1157 | } 1158 | } 1159 | } 1160 | }, 1161 | "eslint-plugin-node": { 1162 | "version": "11.0.0", 1163 | "resolved": "https://registry.npmjs.org/eslint-plugin-node/-/eslint-plugin-node-11.0.0.tgz", 1164 | "integrity": "sha512-chUs/NVID+sknFiJzxoN9lM7uKSOEta8GC8365hw1nDfwIPIjjpRSwwPvQanWv8dt/pDe9EV4anmVSwdiSndNg==", 1165 | "dev": true, 1166 | "requires": { 1167 | "eslint-plugin-es": "^3.0.0", 1168 | "eslint-utils": "^2.0.0", 1169 | "ignore": "^5.1.1", 1170 | "minimatch": "^3.0.4", 1171 | "resolve": "^1.10.1", 1172 | "semver": "^6.1.0" 1173 | }, 1174 | "dependencies": { 1175 | "eslint-utils": { 1176 | "version": "2.0.0", 1177 | "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.0.0.tgz", 1178 | "integrity": "sha512-0HCPuJv+7Wv1bACm8y5/ECVfYdfsAm9xmVb7saeFlxjPYALefjhbYoCkBjPdPzGH8wWyTpAez82Fh3VKYEZ8OA==", 1179 | "dev": true, 1180 | "requires": { 1181 | "eslint-visitor-keys": "^1.1.0" 1182 | } 1183 | }, 1184 | "ignore": { 1185 | "version": "5.1.4", 1186 | "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.1.4.tgz", 1187 | "integrity": "sha512-MzbUSahkTW1u7JpKKjY7LCARd1fU5W2rLdxlM4kdkayuCwZImjkpluF9CM1aLewYJguPDqewLam18Y6AU69A8A==", 1188 | "dev": true 1189 | }, 1190 | "semver": { 1191 | "version": "6.3.0", 1192 | "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", 1193 | "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", 1194 | "dev": true 1195 | } 1196 | } 1197 | }, 1198 | "eslint-plugin-promise": { 1199 | "version": "4.2.1", 1200 | "resolved": "https://registry.npmjs.org/eslint-plugin-promise/-/eslint-plugin-promise-4.2.1.tgz", 1201 | "integrity": "sha512-VoM09vT7bfA7D+upt+FjeBO5eHIJQBUWki1aPvB+vbNiHS3+oGIJGIeyBtKQTME6UPXXy3vV07OL1tHd3ANuDw==", 1202 | "dev": true 1203 | }, 1204 | "eslint-plugin-standard": { 1205 | "version": "4.0.1", 1206 | "resolved": "https://registry.npmjs.org/eslint-plugin-standard/-/eslint-plugin-standard-4.0.1.tgz", 1207 | "integrity": "sha512-v/KBnfyaOMPmZc/dmc6ozOdWqekGp7bBGq4jLAecEfPGmfKiWS4sA8sC0LqiV9w5qmXAtXVn4M3p1jSyhY85SQ==", 1208 | "dev": true 1209 | }, 1210 | "eslint-scope": { 1211 | "version": "5.1.0", 1212 | "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.0.tgz", 1213 | "integrity": "sha512-iiGRvtxWqgtx5m8EyQUJihBloE4EnYeGE/bz1wSPwJE6tZuJUtHlhqDM4Xj2ukE8Dyy1+HCZ4hE0fzIVMzb58w==", 1214 | "dev": true, 1215 | "requires": { 1216 | "esrecurse": "^4.1.0", 1217 | "estraverse": "^4.1.1" 1218 | } 1219 | }, 1220 | "eslint-utils": { 1221 | "version": "2.1.0", 1222 | "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.1.0.tgz", 1223 | "integrity": "sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==", 1224 | "dev": true, 1225 | "requires": { 1226 | "eslint-visitor-keys": "^1.1.0" 1227 | } 1228 | }, 1229 | "eslint-visitor-keys": { 1230 | "version": "1.1.0", 1231 | "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.1.0.tgz", 1232 | "integrity": "sha512-8y9YjtM1JBJU/A9Kc+SbaOV4y29sSWckBwMHa+FGtVj5gN/sbnKDf6xJUl+8g7FAij9LVaP8C24DUiH/f/2Z9A==", 1233 | "dev": true 1234 | }, 1235 | "espree": { 1236 | "version": "7.1.0", 1237 | "resolved": "https://registry.npmjs.org/espree/-/espree-7.1.0.tgz", 1238 | "integrity": "sha512-dcorZSyfmm4WTuTnE5Y7MEN1DyoPYy1ZR783QW1FJoenn7RailyWFsq/UL6ZAAA7uXurN9FIpYyUs3OfiIW+Qw==", 1239 | "dev": true, 1240 | "requires": { 1241 | "acorn": "^7.2.0", 1242 | "acorn-jsx": "^5.2.0", 1243 | "eslint-visitor-keys": "^1.2.0" 1244 | }, 1245 | "dependencies": { 1246 | "eslint-visitor-keys": { 1247 | "version": "1.3.0", 1248 | "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", 1249 | "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", 1250 | "dev": true 1251 | } 1252 | } 1253 | }, 1254 | "esprima": { 1255 | "version": "4.0.1", 1256 | "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", 1257 | "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", 1258 | "dev": true 1259 | }, 1260 | "esquery": { 1261 | "version": "1.3.1", 1262 | "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.3.1.tgz", 1263 | "integrity": "sha512-olpvt9QG0vniUBZspVRN6lwB7hOZoTRtT+jzR+tS4ffYx2mzbw+z0XCOk44aaLYKApNX5nMm+E+P6o25ip/DHQ==", 1264 | "dev": true, 1265 | "requires": { 1266 | "estraverse": "^5.1.0" 1267 | }, 1268 | "dependencies": { 1269 | "estraverse": { 1270 | "version": "5.1.0", 1271 | "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.1.0.tgz", 1272 | "integrity": "sha512-FyohXK+R0vE+y1nHLoBM7ZTyqRpqAlhdZHCWIWEviFLiGB8b04H6bQs8G+XTthacvT8VuwvteiP7RJSxMs8UEw==", 1273 | "dev": true 1274 | } 1275 | } 1276 | }, 1277 | "esrecurse": { 1278 | "version": "4.2.1", 1279 | "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.2.1.tgz", 1280 | "integrity": "sha512-64RBB++fIOAXPw3P9cy89qfMlvZEXZkqqJkjqqXIvzP5ezRZjW+lPWjw35UX/3EhUPFYbg5ER4JYgDw4007/DQ==", 1281 | "dev": true, 1282 | "requires": { 1283 | "estraverse": "^4.1.0" 1284 | } 1285 | }, 1286 | "estraverse": { 1287 | "version": "4.3.0", 1288 | "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", 1289 | "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", 1290 | "dev": true 1291 | }, 1292 | "esutils": { 1293 | "version": "2.0.3", 1294 | "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", 1295 | "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", 1296 | "dev": true 1297 | }, 1298 | "fast-deep-equal": { 1299 | "version": "3.1.3", 1300 | "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", 1301 | "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", 1302 | "dev": true 1303 | }, 1304 | "fast-json-stable-stringify": { 1305 | "version": "2.1.0", 1306 | "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", 1307 | "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", 1308 | "dev": true 1309 | }, 1310 | "fast-levenshtein": { 1311 | "version": "2.0.6", 1312 | "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", 1313 | "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=", 1314 | "dev": true 1315 | }, 1316 | "file-entry-cache": { 1317 | "version": "5.0.1", 1318 | "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-5.0.1.tgz", 1319 | "integrity": "sha512-bCg29ictuBaKUwwArK4ouCaqDgLZcysCFLmM/Yn/FDoqndh/9vNuQfXRDvTuXKLxfD/JtZQGKFT8MGcJBK644g==", 1320 | "dev": true, 1321 | "requires": { 1322 | "flat-cache": "^2.0.1" 1323 | } 1324 | }, 1325 | "fill-range": { 1326 | "version": "7.0.1", 1327 | "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", 1328 | "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", 1329 | "dev": true, 1330 | "requires": { 1331 | "to-regex-range": "^5.0.1" 1332 | } 1333 | }, 1334 | "find-cache-dir": { 1335 | "version": "3.3.1", 1336 | "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.1.tgz", 1337 | "integrity": "sha512-t2GDMt3oGC/v+BMwzmllWDuJF/xcDtE5j/fCGbqDD7OLuJkj0cfh1YSA5VKPvwMeLFLNDBkwOKZ2X85jGLVftQ==", 1338 | "dev": true, 1339 | "requires": { 1340 | "commondir": "^1.0.1", 1341 | "make-dir": "^3.0.2", 1342 | "pkg-dir": "^4.1.0" 1343 | } 1344 | }, 1345 | "find-up": { 1346 | "version": "4.1.0", 1347 | "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", 1348 | "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", 1349 | "dev": true, 1350 | "requires": { 1351 | "locate-path": "^5.0.0", 1352 | "path-exists": "^4.0.0" 1353 | }, 1354 | "dependencies": { 1355 | "path-exists": { 1356 | "version": "4.0.0", 1357 | "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", 1358 | "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", 1359 | "dev": true 1360 | } 1361 | } 1362 | }, 1363 | "find-versions": { 1364 | "version": "3.2.0", 1365 | "resolved": "https://registry.npmjs.org/find-versions/-/find-versions-3.2.0.tgz", 1366 | "integrity": "sha512-P8WRou2S+oe222TOCHitLy8zj+SIsVJh52VP4lvXkaFVnOFFdoWv1H1Jjvel1aI6NCFOAaeAVm8qrI0odiLcww==", 1367 | "dev": true, 1368 | "requires": { 1369 | "semver-regex": "^2.0.0" 1370 | } 1371 | }, 1372 | "flat": { 1373 | "version": "4.1.0", 1374 | "resolved": "https://registry.npmjs.org/flat/-/flat-4.1.0.tgz", 1375 | "integrity": "sha512-Px/TiLIznH7gEDlPXcUD4KnBusa6kR6ayRUVcnEAbreRIuhkqow/mun59BuRXwoYk7ZQOLW1ZM05ilIvK38hFw==", 1376 | "dev": true, 1377 | "requires": { 1378 | "is-buffer": "~2.0.3" 1379 | } 1380 | }, 1381 | "flat-cache": { 1382 | "version": "2.0.1", 1383 | "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-2.0.1.tgz", 1384 | "integrity": "sha512-LoQe6yDuUMDzQAEH8sgmh4Md6oZnc/7PjtwjNFSzveXqSHt6ka9fPBuso7IGf9Rz4uqnSnWiFH2B/zj24a5ReA==", 1385 | "dev": true, 1386 | "requires": { 1387 | "flatted": "^2.0.0", 1388 | "rimraf": "2.6.3", 1389 | "write": "1.0.3" 1390 | } 1391 | }, 1392 | "flatted": { 1393 | "version": "2.0.2", 1394 | "resolved": "https://registry.npmjs.org/flatted/-/flatted-2.0.2.tgz", 1395 | "integrity": "sha512-r5wGx7YeOwNWNlCA0wQ86zKyDLMQr+/RB8xy74M4hTphfmjlijTSSXGuH8rnvKZnfT9i+75zmd8jcKdMR4O6jA==", 1396 | "dev": true 1397 | }, 1398 | "foreground-child": { 1399 | "version": "2.0.0", 1400 | "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-2.0.0.tgz", 1401 | "integrity": "sha512-dCIq9FpEcyQyXKCkyzmlPTFNgrCzPudOe+mhvJU5zAtlBnGVy2yKxtfsxK2tQBThwq225jcvBjpw1Gr40uzZCA==", 1402 | "dev": true, 1403 | "requires": { 1404 | "cross-spawn": "^7.0.0", 1405 | "signal-exit": "^3.0.2" 1406 | } 1407 | }, 1408 | "fromentries": { 1409 | "version": "1.2.0", 1410 | "resolved": "https://registry.npmjs.org/fromentries/-/fromentries-1.2.0.tgz", 1411 | "integrity": "sha512-33X7H/wdfO99GdRLLgkjUrD4geAFdq/Uv0kl3HD4da6HDixd2GUg8Mw7dahLCV9r/EARkmtYBB6Tch4EEokFTQ==", 1412 | "dev": true 1413 | }, 1414 | "fs.realpath": { 1415 | "version": "1.0.0", 1416 | "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", 1417 | "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", 1418 | "dev": true 1419 | }, 1420 | "fsevents": { 1421 | "version": "2.1.3", 1422 | "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.1.3.tgz", 1423 | "integrity": "sha512-Auw9a4AxqWpa9GUfj370BMPzzyncfBABW8Mab7BGWBYDj4Isgq+cDKtx0i6u9jcX9pQDnswsaaOTgTmA5pEjuQ==", 1424 | "dev": true, 1425 | "optional": true 1426 | }, 1427 | "function-bind": { 1428 | "version": "1.1.1", 1429 | "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", 1430 | "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", 1431 | "dev": true 1432 | }, 1433 | "functional-red-black-tree": { 1434 | "version": "1.0.1", 1435 | "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", 1436 | "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=", 1437 | "dev": true 1438 | }, 1439 | "gensync": { 1440 | "version": "1.0.0-beta.1", 1441 | "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.1.tgz", 1442 | "integrity": "sha512-r8EC6NO1sngH/zdD9fiRDLdcgnbayXah+mLgManTaIZJqEC1MZstmnox8KpnI2/fxQwrp5OpCOYWLp4rBl4Jcg==", 1443 | "dev": true 1444 | }, 1445 | "get-caller-file": { 1446 | "version": "2.0.5", 1447 | "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", 1448 | "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", 1449 | "dev": true 1450 | }, 1451 | "get-func-name": { 1452 | "version": "2.0.0", 1453 | "resolved": "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.0.tgz", 1454 | "integrity": "sha1-6td0q+5y4gQJQzoGY2YCPdaIekE=", 1455 | "dev": true 1456 | }, 1457 | "get-package-type": { 1458 | "version": "0.1.0", 1459 | "resolved": "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz", 1460 | "integrity": "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==", 1461 | "dev": true 1462 | }, 1463 | "glob": { 1464 | "version": "7.1.6", 1465 | "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", 1466 | "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", 1467 | "dev": true, 1468 | "requires": { 1469 | "fs.realpath": "^1.0.0", 1470 | "inflight": "^1.0.4", 1471 | "inherits": "2", 1472 | "minimatch": "^3.0.4", 1473 | "once": "^1.3.0", 1474 | "path-is-absolute": "^1.0.0" 1475 | } 1476 | }, 1477 | "glob-parent": { 1478 | "version": "5.1.1", 1479 | "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.1.tgz", 1480 | "integrity": "sha512-FnI+VGOpnlGHWZxthPGR+QhR78fuiK0sNLkHQv+bL9fQi57lNNdquIbna/WrfROrolq8GK5Ek6BiMwqL/voRYQ==", 1481 | "dev": true, 1482 | "requires": { 1483 | "is-glob": "^4.0.1" 1484 | } 1485 | }, 1486 | "globals": { 1487 | "version": "12.4.0", 1488 | "resolved": "https://registry.npmjs.org/globals/-/globals-12.4.0.tgz", 1489 | "integrity": "sha512-BWICuzzDvDoH54NHKCseDanAhE3CeDorgDL5MT6LMXXj2WCnd9UC2szdk4AWLfjdgNBCXLUanXYcpBBKOSWGwg==", 1490 | "dev": true, 1491 | "requires": { 1492 | "type-fest": "^0.8.1" 1493 | } 1494 | }, 1495 | "graceful-fs": { 1496 | "version": "4.2.3", 1497 | "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.3.tgz", 1498 | "integrity": "sha512-a30VEBm4PEdx1dRB7MFK7BejejvCvBronbLjht+sHuGYj8PHs7M/5Z+rt5lw551vZ7yfTCj4Vuyy3mSJytDWRQ==", 1499 | "dev": true 1500 | }, 1501 | "growl": { 1502 | "version": "1.10.5", 1503 | "resolved": "https://registry.npmjs.org/growl/-/growl-1.10.5.tgz", 1504 | "integrity": "sha512-qBr4OuELkhPenW6goKVXiv47US3clb3/IbuWF9KNKEijAy9oeHxU9IgzjvJhHkUzhaj7rOUD7+YGWqUjLp5oSA==", 1505 | "dev": true 1506 | }, 1507 | "has": { 1508 | "version": "1.0.3", 1509 | "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", 1510 | "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", 1511 | "dev": true, 1512 | "requires": { 1513 | "function-bind": "^1.1.1" 1514 | } 1515 | }, 1516 | "has-flag": { 1517 | "version": "3.0.0", 1518 | "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", 1519 | "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", 1520 | "dev": true 1521 | }, 1522 | "has-symbols": { 1523 | "version": "1.0.1", 1524 | "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.1.tgz", 1525 | "integrity": "sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg==", 1526 | "dev": true 1527 | }, 1528 | "hasha": { 1529 | "version": "5.2.0", 1530 | "resolved": "https://registry.npmjs.org/hasha/-/hasha-5.2.0.tgz", 1531 | "integrity": "sha512-2W+jKdQbAdSIrggA8Q35Br8qKadTrqCTC8+XZvBWepKDK6m9XkX6Iz1a2yh2KP01kzAR/dpuMeUnocoLYDcskw==", 1532 | "dev": true, 1533 | "requires": { 1534 | "is-stream": "^2.0.0", 1535 | "type-fest": "^0.8.0" 1536 | } 1537 | }, 1538 | "he": { 1539 | "version": "1.2.0", 1540 | "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", 1541 | "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", 1542 | "dev": true 1543 | }, 1544 | "hosted-git-info": { 1545 | "version": "2.8.8", 1546 | "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.8.tgz", 1547 | "integrity": "sha512-f/wzC2QaWBs7t9IYqB4T3sR1xviIViXJRJTWBlx2Gf3g0Xi5vI7Yy4koXQ1c9OYDGHN9sBy1DQ2AB8fqZBWhUg==", 1548 | "dev": true 1549 | }, 1550 | "html-escaper": { 1551 | "version": "2.0.2", 1552 | "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", 1553 | "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", 1554 | "dev": true 1555 | }, 1556 | "husky": { 1557 | "version": "4.2.5", 1558 | "resolved": "https://registry.npmjs.org/husky/-/husky-4.2.5.tgz", 1559 | "integrity": "sha512-SYZ95AjKcX7goYVZtVZF2i6XiZcHknw50iXvY7b0MiGoj5RwdgRQNEHdb+gPDPCXKlzwrybjFjkL6FOj8uRhZQ==", 1560 | "dev": true, 1561 | "requires": { 1562 | "chalk": "^4.0.0", 1563 | "ci-info": "^2.0.0", 1564 | "compare-versions": "^3.6.0", 1565 | "cosmiconfig": "^6.0.0", 1566 | "find-versions": "^3.2.0", 1567 | "opencollective-postinstall": "^2.0.2", 1568 | "pkg-dir": "^4.2.0", 1569 | "please-upgrade-node": "^3.2.0", 1570 | "slash": "^3.0.0", 1571 | "which-pm-runs": "^1.0.0" 1572 | } 1573 | }, 1574 | "ignore": { 1575 | "version": "4.0.6", 1576 | "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", 1577 | "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", 1578 | "dev": true 1579 | }, 1580 | "import-fresh": { 1581 | "version": "3.2.1", 1582 | "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.2.1.tgz", 1583 | "integrity": "sha512-6e1q1cnWP2RXD9/keSkxHScg508CdXqXWgWBaETNhyuBFz+kUZlKboh+ISK+bU++DmbHimVBrOz/zzPe0sZ3sQ==", 1584 | "dev": true, 1585 | "requires": { 1586 | "parent-module": "^1.0.0", 1587 | "resolve-from": "^4.0.0" 1588 | } 1589 | }, 1590 | "imurmurhash": { 1591 | "version": "0.1.4", 1592 | "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", 1593 | "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", 1594 | "dev": true 1595 | }, 1596 | "indent-string": { 1597 | "version": "4.0.0", 1598 | "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", 1599 | "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", 1600 | "dev": true 1601 | }, 1602 | "inflight": { 1603 | "version": "1.0.6", 1604 | "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", 1605 | "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", 1606 | "dev": true, 1607 | "requires": { 1608 | "once": "^1.3.0", 1609 | "wrappy": "1" 1610 | } 1611 | }, 1612 | "inherits": { 1613 | "version": "2.0.4", 1614 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", 1615 | "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", 1616 | "dev": true 1617 | }, 1618 | "is-arguments": { 1619 | "version": "1.0.4", 1620 | "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.0.4.tgz", 1621 | "integrity": "sha512-xPh0Rmt8NE65sNzvyUmWgI1tz3mKq74lGA0mL8LYZcoIzKOzDh6HmrYm3d18k60nHerC8A9Km8kYu87zfSFnLA==", 1622 | "dev": true 1623 | }, 1624 | "is-arrayish": { 1625 | "version": "0.2.1", 1626 | "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", 1627 | "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", 1628 | "dev": true 1629 | }, 1630 | "is-binary-path": { 1631 | "version": "2.1.0", 1632 | "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", 1633 | "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", 1634 | "dev": true, 1635 | "requires": { 1636 | "binary-extensions": "^2.0.0" 1637 | } 1638 | }, 1639 | "is-buffer": { 1640 | "version": "2.0.4", 1641 | "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.4.tgz", 1642 | "integrity": "sha512-Kq1rokWXOPXWuaMAqZiJW4XxsmD9zGx9q4aePabbn3qCRGedtH7Cm+zV8WETitMfu1wdh+Rvd6w5egwSngUX2A==", 1643 | "dev": true 1644 | }, 1645 | "is-callable": { 1646 | "version": "1.1.5", 1647 | "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.1.5.tgz", 1648 | "integrity": "sha512-ESKv5sMCJB2jnHTWZ3O5itG+O128Hsus4K4Qh1h2/cgn2vbgnLSVqfV46AeJA9D5EeeLa9w81KUXMtn34zhX+Q==", 1649 | "dev": true 1650 | }, 1651 | "is-date-object": { 1652 | "version": "1.0.2", 1653 | "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.2.tgz", 1654 | "integrity": "sha512-USlDT524woQ08aoZFzh3/Z6ch9Y/EWXEHQ/AaRN0SkKq4t2Jw2R2339tSXmwuVoY7LLlBCbOIlx2myP/L5zk0g==", 1655 | "dev": true 1656 | }, 1657 | "is-extglob": { 1658 | "version": "2.1.1", 1659 | "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", 1660 | "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", 1661 | "dev": true 1662 | }, 1663 | "is-fullwidth-code-point": { 1664 | "version": "2.0.0", 1665 | "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", 1666 | "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", 1667 | "dev": true 1668 | }, 1669 | "is-glob": { 1670 | "version": "4.0.1", 1671 | "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz", 1672 | "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==", 1673 | "dev": true, 1674 | "requires": { 1675 | "is-extglob": "^2.1.1" 1676 | } 1677 | }, 1678 | "is-map": { 1679 | "version": "2.0.1", 1680 | "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.1.tgz", 1681 | "integrity": "sha512-T/S49scO8plUiAOA2DBTBG3JHpn1yiw0kRp6dgiZ0v2/6twi5eiB0rHtHFH9ZIrvlWc6+4O+m4zg5+Z833aXgw==", 1682 | "dev": true 1683 | }, 1684 | "is-number": { 1685 | "version": "7.0.0", 1686 | "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", 1687 | "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", 1688 | "dev": true 1689 | }, 1690 | "is-regex": { 1691 | "version": "1.0.5", 1692 | "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.0.5.tgz", 1693 | "integrity": "sha512-vlKW17SNq44owv5AQR3Cq0bQPEb8+kF3UKZ2fiZNOWtztYE5i0CzCZxFDwO58qAOWtxdBRVO/V5Qin1wjCqFYQ==", 1694 | "dev": true, 1695 | "requires": { 1696 | "has": "^1.0.3" 1697 | } 1698 | }, 1699 | "is-set": { 1700 | "version": "2.0.1", 1701 | "resolved": "https://registry.npmjs.org/is-set/-/is-set-2.0.1.tgz", 1702 | "integrity": "sha512-eJEzOtVyenDs1TMzSQ3kU3K+E0GUS9sno+F0OBT97xsgcJsF9nXMBtkT9/kut5JEpM7oL7X/0qxR17K3mcwIAA==", 1703 | "dev": true 1704 | }, 1705 | "is-stream": { 1706 | "version": "2.0.0", 1707 | "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.0.tgz", 1708 | "integrity": "sha512-XCoy+WlUr7d1+Z8GgSuXmpuUFC9fOhRXglJMx+dwLKTkL44Cjd4W1Z5P+BQZpr+cR93aGP4S/s7Ftw6Nd/kiEw==", 1709 | "dev": true 1710 | }, 1711 | "is-string": { 1712 | "version": "1.0.5", 1713 | "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.5.tgz", 1714 | "integrity": "sha512-buY6VNRjhQMiF1qWDouloZlQbRhDPCebwxSjxMjxgemYT46YMd2NR0/H+fBhEfWX4A/w9TBJ+ol+okqJKFE6vQ==", 1715 | "dev": true 1716 | }, 1717 | "is-symbol": { 1718 | "version": "1.0.3", 1719 | "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.3.tgz", 1720 | "integrity": "sha512-OwijhaRSgqvhm/0ZdAcXNZt9lYdKFpcRDT5ULUuYXPoT794UNOdU+gpT6Rzo7b4V2HUl/op6GqY894AZwv9faQ==", 1721 | "dev": true, 1722 | "requires": { 1723 | "has-symbols": "^1.0.1" 1724 | } 1725 | }, 1726 | "is-typedarray": { 1727 | "version": "1.0.0", 1728 | "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", 1729 | "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", 1730 | "dev": true 1731 | }, 1732 | "is-windows": { 1733 | "version": "1.0.2", 1734 | "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", 1735 | "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==", 1736 | "dev": true 1737 | }, 1738 | "isarray": { 1739 | "version": "1.0.0", 1740 | "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", 1741 | "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", 1742 | "dev": true 1743 | }, 1744 | "isexe": { 1745 | "version": "2.0.0", 1746 | "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", 1747 | "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", 1748 | "dev": true 1749 | }, 1750 | "istanbul-lib-coverage": { 1751 | "version": "3.0.0", 1752 | "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.0.0.tgz", 1753 | "integrity": "sha512-UiUIqxMgRDET6eR+o5HbfRYP1l0hqkWOs7vNxC/mggutCMUIhWMm8gAHb8tHlyfD3/l6rlgNA5cKdDzEAf6hEg==", 1754 | "dev": true 1755 | }, 1756 | "istanbul-lib-hook": { 1757 | "version": "3.0.0", 1758 | "resolved": "https://registry.npmjs.org/istanbul-lib-hook/-/istanbul-lib-hook-3.0.0.tgz", 1759 | "integrity": "sha512-Pt/uge1Q9s+5VAZ+pCo16TYMWPBIl+oaNIjgLQxcX0itS6ueeaA+pEfThZpH8WxhFgCiEb8sAJY6MdUKgiIWaQ==", 1760 | "dev": true, 1761 | "requires": { 1762 | "append-transform": "^2.0.0" 1763 | } 1764 | }, 1765 | "istanbul-lib-instrument": { 1766 | "version": "4.0.3", 1767 | "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-4.0.3.tgz", 1768 | "integrity": "sha512-BXgQl9kf4WTCPCCpmFGoJkz/+uhvm7h7PFKUYxh7qarQd3ER33vHG//qaE8eN25l07YqZPpHXU9I09l/RD5aGQ==", 1769 | "dev": true, 1770 | "requires": { 1771 | "@babel/core": "^7.7.5", 1772 | "@istanbuljs/schema": "^0.1.2", 1773 | "istanbul-lib-coverage": "^3.0.0", 1774 | "semver": "^6.3.0" 1775 | }, 1776 | "dependencies": { 1777 | "semver": { 1778 | "version": "6.3.0", 1779 | "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", 1780 | "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", 1781 | "dev": true 1782 | } 1783 | } 1784 | }, 1785 | "istanbul-lib-processinfo": { 1786 | "version": "2.0.2", 1787 | "resolved": "https://registry.npmjs.org/istanbul-lib-processinfo/-/istanbul-lib-processinfo-2.0.2.tgz", 1788 | "integrity": "sha512-kOwpa7z9hme+IBPZMzQ5vdQj8srYgAtaRqeI48NGmAQ+/5yKiHLV0QbYqQpxsdEF0+w14SoB8YbnHKcXE2KnYw==", 1789 | "dev": true, 1790 | "requires": { 1791 | "archy": "^1.0.0", 1792 | "cross-spawn": "^7.0.0", 1793 | "istanbul-lib-coverage": "^3.0.0-alpha.1", 1794 | "make-dir": "^3.0.0", 1795 | "p-map": "^3.0.0", 1796 | "rimraf": "^3.0.0", 1797 | "uuid": "^3.3.3" 1798 | }, 1799 | "dependencies": { 1800 | "rimraf": { 1801 | "version": "3.0.2", 1802 | "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", 1803 | "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", 1804 | "dev": true, 1805 | "requires": { 1806 | "glob": "^7.1.3" 1807 | } 1808 | } 1809 | } 1810 | }, 1811 | "istanbul-lib-report": { 1812 | "version": "3.0.0", 1813 | "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz", 1814 | "integrity": "sha512-wcdi+uAKzfiGT2abPpKZ0hSU1rGQjUQnLvtY5MpQ7QCTahD3VODhcu4wcfY1YtkGaDD5yuydOLINXsfbus9ROw==", 1815 | "dev": true, 1816 | "requires": { 1817 | "istanbul-lib-coverage": "^3.0.0", 1818 | "make-dir": "^3.0.0", 1819 | "supports-color": "^7.1.0" 1820 | }, 1821 | "dependencies": { 1822 | "has-flag": { 1823 | "version": "4.0.0", 1824 | "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", 1825 | "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", 1826 | "dev": true 1827 | }, 1828 | "supports-color": { 1829 | "version": "7.1.0", 1830 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.1.0.tgz", 1831 | "integrity": "sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g==", 1832 | "dev": true, 1833 | "requires": { 1834 | "has-flag": "^4.0.0" 1835 | } 1836 | } 1837 | } 1838 | }, 1839 | "istanbul-lib-source-maps": { 1840 | "version": "4.0.0", 1841 | "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.0.tgz", 1842 | "integrity": "sha512-c16LpFRkR8vQXyHZ5nLpY35JZtzj1PQY1iZmesUbf1FZHbIupcWfjgOXBY9YHkLEQ6puz1u4Dgj6qmU/DisrZg==", 1843 | "dev": true, 1844 | "requires": { 1845 | "debug": "^4.1.1", 1846 | "istanbul-lib-coverage": "^3.0.0", 1847 | "source-map": "^0.6.1" 1848 | }, 1849 | "dependencies": { 1850 | "source-map": { 1851 | "version": "0.6.1", 1852 | "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", 1853 | "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", 1854 | "dev": true 1855 | } 1856 | } 1857 | }, 1858 | "istanbul-reports": { 1859 | "version": "3.0.2", 1860 | "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.0.2.tgz", 1861 | "integrity": "sha512-9tZvz7AiR3PEDNGiV9vIouQ/EAcqMXFmkcA1CDFTwOB98OZVDL0PH9glHotf5Ugp6GCOTypfzGWI/OqjWNCRUw==", 1862 | "dev": true, 1863 | "requires": { 1864 | "html-escaper": "^2.0.0", 1865 | "istanbul-lib-report": "^3.0.0" 1866 | } 1867 | }, 1868 | "iterate-iterator": { 1869 | "version": "1.0.1", 1870 | "resolved": "https://registry.npmjs.org/iterate-iterator/-/iterate-iterator-1.0.1.tgz", 1871 | "integrity": "sha512-3Q6tudGN05kbkDQDI4CqjaBf4qf85w6W6GnuZDtUVYwKgtC1q8yxYX7CZed7N+tLzQqS6roujWvszf13T+n9aw==", 1872 | "dev": true 1873 | }, 1874 | "iterate-value": { 1875 | "version": "1.0.2", 1876 | "resolved": "https://registry.npmjs.org/iterate-value/-/iterate-value-1.0.2.tgz", 1877 | "integrity": "sha512-A6fMAio4D2ot2r/TYzr4yUWrmwNdsN5xL7+HUiyACE4DXm+q8HtPcnFTp+NnW3k4N05tZ7FVYFFb2CR13NxyHQ==", 1878 | "dev": true, 1879 | "requires": { 1880 | "es-get-iterator": "^1.0.2", 1881 | "iterate-iterator": "^1.0.1" 1882 | } 1883 | }, 1884 | "js-tokens": { 1885 | "version": "4.0.0", 1886 | "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", 1887 | "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", 1888 | "dev": true 1889 | }, 1890 | "js-yaml": { 1891 | "version": "3.14.0", 1892 | "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.0.tgz", 1893 | "integrity": "sha512-/4IbIeHcD9VMHFqDR/gQ7EdZdLimOvW2DdcxFjdyyZ9NsbS+ccrXqVWDtab/lRl5AlUqmpBx8EhPaWR+OtY17A==", 1894 | "dev": true, 1895 | "requires": { 1896 | "argparse": "^1.0.7", 1897 | "esprima": "^4.0.0" 1898 | } 1899 | }, 1900 | "jsesc": { 1901 | "version": "2.5.2", 1902 | "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", 1903 | "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", 1904 | "dev": true 1905 | }, 1906 | "json-parse-better-errors": { 1907 | "version": "1.0.2", 1908 | "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", 1909 | "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==", 1910 | "dev": true 1911 | }, 1912 | "json-schema-traverse": { 1913 | "version": "0.4.1", 1914 | "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", 1915 | "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", 1916 | "dev": true 1917 | }, 1918 | "json-stable-stringify-without-jsonify": { 1919 | "version": "1.0.1", 1920 | "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", 1921 | "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=", 1922 | "dev": true 1923 | }, 1924 | "json5": { 1925 | "version": "2.1.3", 1926 | "resolved": "https://registry.npmjs.org/json5/-/json5-2.1.3.tgz", 1927 | "integrity": "sha512-KXPvOm8K9IJKFM0bmdn8QXh7udDh1g/giieX0NLCaMnb4hEiVFqnop2ImTXCc5e0/oHz3LTqmHGtExn5hfMkOA==", 1928 | "dev": true, 1929 | "requires": { 1930 | "minimist": "^1.2.5" 1931 | } 1932 | }, 1933 | "levn": { 1934 | "version": "0.4.1", 1935 | "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", 1936 | "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", 1937 | "dev": true, 1938 | "requires": { 1939 | "prelude-ls": "^1.2.1", 1940 | "type-check": "~0.4.0" 1941 | } 1942 | }, 1943 | "lines-and-columns": { 1944 | "version": "1.1.6", 1945 | "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.1.6.tgz", 1946 | "integrity": "sha1-HADHQ7QzzQpOgHWPe2SldEDZ/wA=", 1947 | "dev": true 1948 | }, 1949 | "load-json-file": { 1950 | "version": "2.0.0", 1951 | "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-2.0.0.tgz", 1952 | "integrity": "sha1-eUfkIUmvgNaWy/eXvKq8/h/inKg=", 1953 | "dev": true, 1954 | "requires": { 1955 | "graceful-fs": "^4.1.2", 1956 | "parse-json": "^2.2.0", 1957 | "pify": "^2.0.0", 1958 | "strip-bom": "^3.0.0" 1959 | }, 1960 | "dependencies": { 1961 | "strip-bom": { 1962 | "version": "3.0.0", 1963 | "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", 1964 | "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=", 1965 | "dev": true 1966 | } 1967 | } 1968 | }, 1969 | "locate-path": { 1970 | "version": "5.0.0", 1971 | "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", 1972 | "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", 1973 | "dev": true, 1974 | "requires": { 1975 | "p-locate": "^4.1.0" 1976 | } 1977 | }, 1978 | "lodash": { 1979 | "version": "4.17.15", 1980 | "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz", 1981 | "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==", 1982 | "dev": true 1983 | }, 1984 | "lodash.flattendeep": { 1985 | "version": "4.4.0", 1986 | "resolved": "https://registry.npmjs.org/lodash.flattendeep/-/lodash.flattendeep-4.4.0.tgz", 1987 | "integrity": "sha1-+wMJF/hqMTTlvJvsDWngAT3f7bI=", 1988 | "dev": true 1989 | }, 1990 | "log-symbols": { 1991 | "version": "3.0.0", 1992 | "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-3.0.0.tgz", 1993 | "integrity": "sha512-dSkNGuI7iG3mfvDzUuYZyvk5dD9ocYCYzNU6CYDE6+Xqd+gwme6Z00NS3dUh8mq/73HaEtT7m6W+yUPtU6BZnQ==", 1994 | "dev": true, 1995 | "requires": { 1996 | "chalk": "^2.4.2" 1997 | }, 1998 | "dependencies": { 1999 | "chalk": { 2000 | "version": "2.4.2", 2001 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", 2002 | "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", 2003 | "dev": true, 2004 | "requires": { 2005 | "ansi-styles": "^3.2.1", 2006 | "escape-string-regexp": "^1.0.5", 2007 | "supports-color": "^5.3.0" 2008 | } 2009 | } 2010 | } 2011 | }, 2012 | "make-dir": { 2013 | "version": "3.1.0", 2014 | "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", 2015 | "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", 2016 | "dev": true, 2017 | "requires": { 2018 | "semver": "^6.0.0" 2019 | }, 2020 | "dependencies": { 2021 | "semver": { 2022 | "version": "6.3.0", 2023 | "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", 2024 | "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", 2025 | "dev": true 2026 | } 2027 | } 2028 | }, 2029 | "meriyah": { 2030 | "version": "1.9.15", 2031 | "resolved": "https://registry.npmjs.org/meriyah/-/meriyah-1.9.15.tgz", 2032 | "integrity": "sha512-D4rT6XIYGqZab0EI/xbihUpwh0WbNRVQ35l2J/5QC2atxaI8h3KvA55DEJLBB/FRdaji7JwkNehfCRjCyjCjqw==" 2033 | }, 2034 | "minimatch": { 2035 | "version": "3.0.4", 2036 | "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", 2037 | "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", 2038 | "dev": true, 2039 | "requires": { 2040 | "brace-expansion": "^1.1.7" 2041 | } 2042 | }, 2043 | "minimist": { 2044 | "version": "1.2.5", 2045 | "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", 2046 | "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", 2047 | "dev": true 2048 | }, 2049 | "mkdirp": { 2050 | "version": "0.5.5", 2051 | "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", 2052 | "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", 2053 | "dev": true, 2054 | "requires": { 2055 | "minimist": "^1.2.5" 2056 | } 2057 | }, 2058 | "mocha": { 2059 | "version": "8.0.1", 2060 | "resolved": "https://registry.npmjs.org/mocha/-/mocha-8.0.1.tgz", 2061 | "integrity": "sha512-vefaXfdYI8+Yo8nPZQQi0QO2o+5q9UIMX1jZ1XMmK3+4+CQjc7+B0hPdUeglXiTlr8IHMVRo63IhO9Mzt6fxOg==", 2062 | "dev": true, 2063 | "requires": { 2064 | "ansi-colors": "4.1.1", 2065 | "browser-stdout": "1.3.1", 2066 | "chokidar": "3.3.1", 2067 | "debug": "3.2.6", 2068 | "diff": "4.0.2", 2069 | "escape-string-regexp": "1.0.5", 2070 | "find-up": "4.1.0", 2071 | "glob": "7.1.6", 2072 | "growl": "1.10.5", 2073 | "he": "1.2.0", 2074 | "js-yaml": "3.13.1", 2075 | "log-symbols": "3.0.0", 2076 | "minimatch": "3.0.4", 2077 | "ms": "2.1.2", 2078 | "object.assign": "4.1.0", 2079 | "promise.allsettled": "1.0.2", 2080 | "serialize-javascript": "3.0.0", 2081 | "strip-json-comments": "3.0.1", 2082 | "supports-color": "7.1.0", 2083 | "which": "2.0.2", 2084 | "wide-align": "1.1.3", 2085 | "workerpool": "6.0.0", 2086 | "yargs": "13.3.2", 2087 | "yargs-parser": "13.1.2", 2088 | "yargs-unparser": "1.6.0" 2089 | }, 2090 | "dependencies": { 2091 | "debug": { 2092 | "version": "3.2.6", 2093 | "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", 2094 | "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", 2095 | "dev": true, 2096 | "requires": { 2097 | "ms": "^2.1.1" 2098 | } 2099 | }, 2100 | "has-flag": { 2101 | "version": "4.0.0", 2102 | "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", 2103 | "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", 2104 | "dev": true 2105 | }, 2106 | "js-yaml": { 2107 | "version": "3.13.1", 2108 | "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.13.1.tgz", 2109 | "integrity": "sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw==", 2110 | "dev": true, 2111 | "requires": { 2112 | "argparse": "^1.0.7", 2113 | "esprima": "^4.0.0" 2114 | } 2115 | }, 2116 | "strip-json-comments": { 2117 | "version": "3.0.1", 2118 | "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.0.1.tgz", 2119 | "integrity": "sha512-VTyMAUfdm047mwKl+u79WIdrZxtFtn+nBxHeb844XBQ9uMNTuTHdx2hc5RiAJYqwTj3wc/xe5HLSdJSkJ+WfZw==", 2120 | "dev": true 2121 | }, 2122 | "supports-color": { 2123 | "version": "7.1.0", 2124 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.1.0.tgz", 2125 | "integrity": "sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g==", 2126 | "dev": true, 2127 | "requires": { 2128 | "has-flag": "^4.0.0" 2129 | } 2130 | } 2131 | } 2132 | }, 2133 | "ms": { 2134 | "version": "2.1.2", 2135 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", 2136 | "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", 2137 | "dev": true 2138 | }, 2139 | "natural-compare": { 2140 | "version": "1.4.0", 2141 | "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", 2142 | "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=", 2143 | "dev": true 2144 | }, 2145 | "node-preload": { 2146 | "version": "0.2.1", 2147 | "resolved": "https://registry.npmjs.org/node-preload/-/node-preload-0.2.1.tgz", 2148 | "integrity": "sha512-RM5oyBy45cLEoHqCeh+MNuFAxO0vTFBLskvQbOKnEE7YTTSN4tbN8QWDIPQ6L+WvKsB/qLEGpYe2ZZ9d4W9OIQ==", 2149 | "dev": true, 2150 | "requires": { 2151 | "process-on-spawn": "^1.0.0" 2152 | } 2153 | }, 2154 | "normalize-package-data": { 2155 | "version": "2.5.0", 2156 | "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", 2157 | "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", 2158 | "dev": true, 2159 | "requires": { 2160 | "hosted-git-info": "^2.1.4", 2161 | "resolve": "^1.10.0", 2162 | "semver": "2 || 3 || 4 || 5", 2163 | "validate-npm-package-license": "^3.0.1" 2164 | } 2165 | }, 2166 | "normalize-path": { 2167 | "version": "3.0.0", 2168 | "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", 2169 | "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", 2170 | "dev": true 2171 | }, 2172 | "nyc": { 2173 | "version": "15.1.0", 2174 | "resolved": "https://registry.npmjs.org/nyc/-/nyc-15.1.0.tgz", 2175 | "integrity": "sha512-jMW04n9SxKdKi1ZMGhvUTHBN0EICCRkHemEoE5jm6mTYcqcdas0ATzgUgejlQUHMvpnOZqGB5Xxsv9KxJW1j8A==", 2176 | "dev": true, 2177 | "requires": { 2178 | "@istanbuljs/load-nyc-config": "^1.0.0", 2179 | "@istanbuljs/schema": "^0.1.2", 2180 | "caching-transform": "^4.0.0", 2181 | "convert-source-map": "^1.7.0", 2182 | "decamelize": "^1.2.0", 2183 | "find-cache-dir": "^3.2.0", 2184 | "find-up": "^4.1.0", 2185 | "foreground-child": "^2.0.0", 2186 | "get-package-type": "^0.1.0", 2187 | "glob": "^7.1.6", 2188 | "istanbul-lib-coverage": "^3.0.0", 2189 | "istanbul-lib-hook": "^3.0.0", 2190 | "istanbul-lib-instrument": "^4.0.0", 2191 | "istanbul-lib-processinfo": "^2.0.2", 2192 | "istanbul-lib-report": "^3.0.0", 2193 | "istanbul-lib-source-maps": "^4.0.0", 2194 | "istanbul-reports": "^3.0.2", 2195 | "make-dir": "^3.0.0", 2196 | "node-preload": "^0.2.1", 2197 | "p-map": "^3.0.0", 2198 | "process-on-spawn": "^1.0.0", 2199 | "resolve-from": "^5.0.0", 2200 | "rimraf": "^3.0.0", 2201 | "signal-exit": "^3.0.2", 2202 | "spawn-wrap": "^2.0.0", 2203 | "test-exclude": "^6.0.0", 2204 | "yargs": "^15.0.2" 2205 | }, 2206 | "dependencies": { 2207 | "ansi-styles": { 2208 | "version": "4.2.1", 2209 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz", 2210 | "integrity": "sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA==", 2211 | "dev": true, 2212 | "requires": { 2213 | "@types/color-name": "^1.1.1", 2214 | "color-convert": "^2.0.1" 2215 | } 2216 | }, 2217 | "cliui": { 2218 | "version": "6.0.0", 2219 | "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz", 2220 | "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==", 2221 | "dev": true, 2222 | "requires": { 2223 | "string-width": "^4.2.0", 2224 | "strip-ansi": "^6.0.0", 2225 | "wrap-ansi": "^6.2.0" 2226 | } 2227 | }, 2228 | "color-convert": { 2229 | "version": "2.0.1", 2230 | "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", 2231 | "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", 2232 | "dev": true, 2233 | "requires": { 2234 | "color-name": "~1.1.4" 2235 | } 2236 | }, 2237 | "color-name": { 2238 | "version": "1.1.4", 2239 | "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", 2240 | "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", 2241 | "dev": true 2242 | }, 2243 | "emoji-regex": { 2244 | "version": "8.0.0", 2245 | "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", 2246 | "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", 2247 | "dev": true 2248 | }, 2249 | "is-fullwidth-code-point": { 2250 | "version": "3.0.0", 2251 | "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", 2252 | "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", 2253 | "dev": true 2254 | }, 2255 | "resolve-from": { 2256 | "version": "5.0.0", 2257 | "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", 2258 | "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", 2259 | "dev": true 2260 | }, 2261 | "rimraf": { 2262 | "version": "3.0.2", 2263 | "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", 2264 | "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", 2265 | "dev": true, 2266 | "requires": { 2267 | "glob": "^7.1.3" 2268 | } 2269 | }, 2270 | "string-width": { 2271 | "version": "4.2.0", 2272 | "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.0.tgz", 2273 | "integrity": "sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg==", 2274 | "dev": true, 2275 | "requires": { 2276 | "emoji-regex": "^8.0.0", 2277 | "is-fullwidth-code-point": "^3.0.0", 2278 | "strip-ansi": "^6.0.0" 2279 | } 2280 | }, 2281 | "wrap-ansi": { 2282 | "version": "6.2.0", 2283 | "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", 2284 | "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", 2285 | "dev": true, 2286 | "requires": { 2287 | "ansi-styles": "^4.0.0", 2288 | "string-width": "^4.1.0", 2289 | "strip-ansi": "^6.0.0" 2290 | } 2291 | }, 2292 | "yargs": { 2293 | "version": "15.4.0", 2294 | "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.4.0.tgz", 2295 | "integrity": "sha512-D3fRFnZwLWp8jVAAhPZBsmeIHY8tTsb8ItV9KaAaopmC6wde2u6Yw29JBIZHXw14kgkRnYmDgmQU4FVMDlIsWw==", 2296 | "dev": true, 2297 | "requires": { 2298 | "cliui": "^6.0.0", 2299 | "decamelize": "^3.2.0", 2300 | "find-up": "^4.1.0", 2301 | "get-caller-file": "^2.0.1", 2302 | "require-directory": "^2.1.1", 2303 | "require-main-filename": "^2.0.0", 2304 | "set-blocking": "^2.0.0", 2305 | "string-width": "^4.2.0", 2306 | "which-module": "^2.0.0", 2307 | "y18n": "^4.0.0", 2308 | "yargs-parser": "^18.1.2" 2309 | }, 2310 | "dependencies": { 2311 | "decamelize": { 2312 | "version": "3.2.0", 2313 | "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-3.2.0.tgz", 2314 | "integrity": "sha512-4TgkVUsmmu7oCSyGBm5FvfMoACuoh9EOidm7V5/J2X2djAwwt57qb3F2KMP2ITqODTCSwb+YRV+0Zqrv18k/hw==", 2315 | "dev": true, 2316 | "requires": { 2317 | "xregexp": "^4.2.4" 2318 | } 2319 | } 2320 | } 2321 | }, 2322 | "yargs-parser": { 2323 | "version": "18.1.3", 2324 | "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz", 2325 | "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==", 2326 | "dev": true, 2327 | "requires": { 2328 | "camelcase": "^5.0.0", 2329 | "decamelize": "^1.2.0" 2330 | } 2331 | } 2332 | } 2333 | }, 2334 | "object-inspect": { 2335 | "version": "1.7.0", 2336 | "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.7.0.tgz", 2337 | "integrity": "sha512-a7pEHdh1xKIAgTySUGgLMx/xwDZskN1Ud6egYYN3EdRW4ZMPNEDUTF+hwy2LUC+Bl+SyLXANnwz/jyh/qutKUw==", 2338 | "dev": true 2339 | }, 2340 | "object-keys": { 2341 | "version": "1.1.1", 2342 | "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", 2343 | "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", 2344 | "dev": true 2345 | }, 2346 | "object.assign": { 2347 | "version": "4.1.0", 2348 | "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.0.tgz", 2349 | "integrity": "sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w==", 2350 | "dev": true, 2351 | "requires": { 2352 | "define-properties": "^1.1.2", 2353 | "function-bind": "^1.1.1", 2354 | "has-symbols": "^1.0.0", 2355 | "object-keys": "^1.0.11" 2356 | } 2357 | }, 2358 | "object.values": { 2359 | "version": "1.1.1", 2360 | "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.1.tgz", 2361 | "integrity": "sha512-WTa54g2K8iu0kmS/us18jEmdv1a4Wi//BZ/DTVYEcH0XhLM5NYdpDHja3gt57VrZLcNAO2WGA+KpWsDBaHt6eA==", 2362 | "dev": true, 2363 | "requires": { 2364 | "define-properties": "^1.1.3", 2365 | "es-abstract": "^1.17.0-next.1", 2366 | "function-bind": "^1.1.1", 2367 | "has": "^1.0.3" 2368 | } 2369 | }, 2370 | "once": { 2371 | "version": "1.4.0", 2372 | "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", 2373 | "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", 2374 | "dev": true, 2375 | "requires": { 2376 | "wrappy": "1" 2377 | } 2378 | }, 2379 | "opencollective-postinstall": { 2380 | "version": "2.0.3", 2381 | "resolved": "https://registry.npmjs.org/opencollective-postinstall/-/opencollective-postinstall-2.0.3.tgz", 2382 | "integrity": "sha512-8AV/sCtuzUeTo8gQK5qDZzARrulB3egtLzFgteqB2tcT4Mw7B8Kt7JcDHmltjz6FOAHsvTevk70gZEbhM4ZS9Q==", 2383 | "dev": true 2384 | }, 2385 | "optionator": { 2386 | "version": "0.9.1", 2387 | "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", 2388 | "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==", 2389 | "dev": true, 2390 | "requires": { 2391 | "deep-is": "^0.1.3", 2392 | "fast-levenshtein": "^2.0.6", 2393 | "levn": "^0.4.1", 2394 | "prelude-ls": "^1.2.1", 2395 | "type-check": "^0.4.0", 2396 | "word-wrap": "^1.2.3" 2397 | } 2398 | }, 2399 | "p-limit": { 2400 | "version": "2.3.0", 2401 | "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", 2402 | "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", 2403 | "dev": true, 2404 | "requires": { 2405 | "p-try": "^2.0.0" 2406 | } 2407 | }, 2408 | "p-locate": { 2409 | "version": "4.1.0", 2410 | "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", 2411 | "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", 2412 | "dev": true, 2413 | "requires": { 2414 | "p-limit": "^2.2.0" 2415 | } 2416 | }, 2417 | "p-map": { 2418 | "version": "3.0.0", 2419 | "resolved": "https://registry.npmjs.org/p-map/-/p-map-3.0.0.tgz", 2420 | "integrity": "sha512-d3qXVTF/s+W+CdJ5A29wywV2n8CQQYahlgz2bFiA+4eVNJbHJodPZ+/gXwPGh0bOqA+j8S+6+ckmvLGPk1QpxQ==", 2421 | "dev": true, 2422 | "requires": { 2423 | "aggregate-error": "^3.0.0" 2424 | } 2425 | }, 2426 | "p-try": { 2427 | "version": "2.2.0", 2428 | "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", 2429 | "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", 2430 | "dev": true 2431 | }, 2432 | "package-hash": { 2433 | "version": "4.0.0", 2434 | "resolved": "https://registry.npmjs.org/package-hash/-/package-hash-4.0.0.tgz", 2435 | "integrity": "sha512-whdkPIooSu/bASggZ96BWVvZTRMOFxnyUG5PnTSGKoJE2gd5mbVNmR2Nj20QFzxYYgAXpoqC+AiXzl+UMRh7zQ==", 2436 | "dev": true, 2437 | "requires": { 2438 | "graceful-fs": "^4.1.15", 2439 | "hasha": "^5.0.0", 2440 | "lodash.flattendeep": "^4.4.0", 2441 | "release-zalgo": "^1.0.0" 2442 | } 2443 | }, 2444 | "parent-module": { 2445 | "version": "1.0.1", 2446 | "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", 2447 | "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", 2448 | "dev": true, 2449 | "requires": { 2450 | "callsites": "^3.0.0" 2451 | } 2452 | }, 2453 | "parse-json": { 2454 | "version": "2.2.0", 2455 | "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", 2456 | "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", 2457 | "dev": true, 2458 | "requires": { 2459 | "error-ex": "^1.2.0" 2460 | } 2461 | }, 2462 | "path-exists": { 2463 | "version": "3.0.0", 2464 | "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", 2465 | "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", 2466 | "dev": true 2467 | }, 2468 | "path-is-absolute": { 2469 | "version": "1.0.1", 2470 | "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", 2471 | "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", 2472 | "dev": true 2473 | }, 2474 | "path-key": { 2475 | "version": "3.1.1", 2476 | "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", 2477 | "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", 2478 | "dev": true 2479 | }, 2480 | "path-parse": { 2481 | "version": "1.0.6", 2482 | "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz", 2483 | "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==", 2484 | "dev": true 2485 | }, 2486 | "path-type": { 2487 | "version": "2.0.0", 2488 | "resolved": "https://registry.npmjs.org/path-type/-/path-type-2.0.0.tgz", 2489 | "integrity": "sha1-8BLMuEFbcJb8LaoQVMPXI4lZTHM=", 2490 | "dev": true, 2491 | "requires": { 2492 | "pify": "^2.0.0" 2493 | } 2494 | }, 2495 | "pathval": { 2496 | "version": "1.1.0", 2497 | "resolved": "https://registry.npmjs.org/pathval/-/pathval-1.1.0.tgz", 2498 | "integrity": "sha1-uULm1L3mUwBe9rcTYd74cn0GReA=", 2499 | "dev": true 2500 | }, 2501 | "picomatch": { 2502 | "version": "2.2.2", 2503 | "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.2.2.tgz", 2504 | "integrity": "sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg==", 2505 | "dev": true 2506 | }, 2507 | "pify": { 2508 | "version": "2.3.0", 2509 | "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", 2510 | "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", 2511 | "dev": true 2512 | }, 2513 | "pkg-dir": { 2514 | "version": "4.2.0", 2515 | "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", 2516 | "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", 2517 | "dev": true, 2518 | "requires": { 2519 | "find-up": "^4.0.0" 2520 | } 2521 | }, 2522 | "please-upgrade-node": { 2523 | "version": "3.2.0", 2524 | "resolved": "https://registry.npmjs.org/please-upgrade-node/-/please-upgrade-node-3.2.0.tgz", 2525 | "integrity": "sha512-gQR3WpIgNIKwBMVLkpMUeR3e1/E1y42bqDQZfql+kDeXd8COYfM8PQA4X6y7a8u9Ua9FHmsrrmirW2vHs45hWg==", 2526 | "dev": true, 2527 | "requires": { 2528 | "semver-compare": "^1.0.0" 2529 | } 2530 | }, 2531 | "prelude-ls": { 2532 | "version": "1.2.1", 2533 | "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", 2534 | "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", 2535 | "dev": true 2536 | }, 2537 | "process-on-spawn": { 2538 | "version": "1.0.0", 2539 | "resolved": "https://registry.npmjs.org/process-on-spawn/-/process-on-spawn-1.0.0.tgz", 2540 | "integrity": "sha512-1WsPDsUSMmZH5LeMLegqkPDrsGgsWwk1Exipy2hvB0o/F0ASzbpIctSCcZIK1ykJvtTJULEH+20WOFjMvGnCTg==", 2541 | "dev": true, 2542 | "requires": { 2543 | "fromentries": "^1.2.0" 2544 | } 2545 | }, 2546 | "progress": { 2547 | "version": "2.0.3", 2548 | "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", 2549 | "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", 2550 | "dev": true 2551 | }, 2552 | "promise.allsettled": { 2553 | "version": "1.0.2", 2554 | "resolved": "https://registry.npmjs.org/promise.allsettled/-/promise.allsettled-1.0.2.tgz", 2555 | "integrity": "sha512-UpcYW5S1RaNKT6pd+s9jp9K9rlQge1UXKskec0j6Mmuq7UJCvlS2J2/s/yuPN8ehftf9HXMxWlKiPbGGUzpoRg==", 2556 | "dev": true, 2557 | "requires": { 2558 | "array.prototype.map": "^1.0.1", 2559 | "define-properties": "^1.1.3", 2560 | "es-abstract": "^1.17.0-next.1", 2561 | "function-bind": "^1.1.1", 2562 | "iterate-value": "^1.0.0" 2563 | } 2564 | }, 2565 | "punycode": { 2566 | "version": "2.1.1", 2567 | "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", 2568 | "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", 2569 | "dev": true 2570 | }, 2571 | "read-pkg": { 2572 | "version": "2.0.0", 2573 | "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-2.0.0.tgz", 2574 | "integrity": "sha1-jvHAYjxqbbDcZxPEv6xGMysjaPg=", 2575 | "dev": true, 2576 | "requires": { 2577 | "load-json-file": "^2.0.0", 2578 | "normalize-package-data": "^2.3.2", 2579 | "path-type": "^2.0.0" 2580 | } 2581 | }, 2582 | "read-pkg-up": { 2583 | "version": "2.0.0", 2584 | "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-2.0.0.tgz", 2585 | "integrity": "sha1-a3KoBImE4MQeeVEP1en6mbO1Sb4=", 2586 | "dev": true, 2587 | "requires": { 2588 | "find-up": "^2.0.0", 2589 | "read-pkg": "^2.0.0" 2590 | }, 2591 | "dependencies": { 2592 | "find-up": { 2593 | "version": "2.1.0", 2594 | "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", 2595 | "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", 2596 | "dev": true, 2597 | "requires": { 2598 | "locate-path": "^2.0.0" 2599 | } 2600 | }, 2601 | "locate-path": { 2602 | "version": "2.0.0", 2603 | "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", 2604 | "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", 2605 | "dev": true, 2606 | "requires": { 2607 | "p-locate": "^2.0.0", 2608 | "path-exists": "^3.0.0" 2609 | } 2610 | }, 2611 | "p-limit": { 2612 | "version": "1.3.0", 2613 | "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", 2614 | "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", 2615 | "dev": true, 2616 | "requires": { 2617 | "p-try": "^1.0.0" 2618 | } 2619 | }, 2620 | "p-locate": { 2621 | "version": "2.0.0", 2622 | "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", 2623 | "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", 2624 | "dev": true, 2625 | "requires": { 2626 | "p-limit": "^1.1.0" 2627 | } 2628 | }, 2629 | "p-try": { 2630 | "version": "1.0.0", 2631 | "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", 2632 | "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=", 2633 | "dev": true 2634 | } 2635 | } 2636 | }, 2637 | "readdirp": { 2638 | "version": "3.3.0", 2639 | "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.3.0.tgz", 2640 | "integrity": "sha512-zz0pAkSPOXXm1viEwygWIPSPkcBYjW1xU5j/JBh5t9bGCJwa6f9+BJa6VaB2g+b55yVrmXzqkyLf4xaWYM0IkQ==", 2641 | "dev": true, 2642 | "requires": { 2643 | "picomatch": "^2.0.7" 2644 | } 2645 | }, 2646 | "regenerator-runtime": { 2647 | "version": "0.13.5", 2648 | "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.5.tgz", 2649 | "integrity": "sha512-ZS5w8CpKFinUzOwW3c83oPeVXoNsrLsaCoLtJvAClH135j/R77RuymhiSErhm2lKcwSCIpmvIWSbDkIfAqKQlA==", 2650 | "dev": true 2651 | }, 2652 | "regexpp": { 2653 | "version": "3.1.0", 2654 | "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.1.0.tgz", 2655 | "integrity": "sha512-ZOIzd8yVsQQA7j8GCSlPGXwg5PfmA1mrq0JP4nGhh54LaKN3xdai/vHUDu74pKwV8OxseMS65u2NImosQcSD0Q==", 2656 | "dev": true 2657 | }, 2658 | "release-zalgo": { 2659 | "version": "1.0.0", 2660 | "resolved": "https://registry.npmjs.org/release-zalgo/-/release-zalgo-1.0.0.tgz", 2661 | "integrity": "sha1-CXALflB0Mpc5Mw5TXFqQ+2eFFzA=", 2662 | "dev": true, 2663 | "requires": { 2664 | "es6-error": "^4.0.1" 2665 | } 2666 | }, 2667 | "require-directory": { 2668 | "version": "2.1.1", 2669 | "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", 2670 | "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", 2671 | "dev": true 2672 | }, 2673 | "require-main-filename": { 2674 | "version": "2.0.0", 2675 | "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", 2676 | "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==", 2677 | "dev": true 2678 | }, 2679 | "resolve": { 2680 | "version": "1.14.2", 2681 | "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.14.2.tgz", 2682 | "integrity": "sha512-EjlOBLBO1kxsUxsKjLt7TAECyKW6fOh1VRkykQkKGzcBbjjPIxBqGh0jf7GJ3k/f5mxMqW3htMD3WdTUVtW8HQ==", 2683 | "dev": true, 2684 | "requires": { 2685 | "path-parse": "^1.0.6" 2686 | } 2687 | }, 2688 | "resolve-from": { 2689 | "version": "4.0.0", 2690 | "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", 2691 | "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", 2692 | "dev": true 2693 | }, 2694 | "rimraf": { 2695 | "version": "2.6.3", 2696 | "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz", 2697 | "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==", 2698 | "dev": true, 2699 | "requires": { 2700 | "glob": "^7.1.3" 2701 | } 2702 | }, 2703 | "safe-buffer": { 2704 | "version": "5.1.2", 2705 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", 2706 | "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", 2707 | "dev": true 2708 | }, 2709 | "semver": { 2710 | "version": "5.7.1", 2711 | "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", 2712 | "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", 2713 | "dev": true 2714 | }, 2715 | "semver-compare": { 2716 | "version": "1.0.0", 2717 | "resolved": "https://registry.npmjs.org/semver-compare/-/semver-compare-1.0.0.tgz", 2718 | "integrity": "sha1-De4hahyUGrN+nvsXiPavxf9VN/w=", 2719 | "dev": true 2720 | }, 2721 | "semver-regex": { 2722 | "version": "2.0.0", 2723 | "resolved": "https://registry.npmjs.org/semver-regex/-/semver-regex-2.0.0.tgz", 2724 | "integrity": "sha512-mUdIBBvdn0PLOeP3TEkMH7HHeUP3GjsXCwKarjv/kGmUFOYg1VqEemKhoQpWMu6X2I8kHeuVdGibLGkVK+/5Qw==", 2725 | "dev": true 2726 | }, 2727 | "serialize-javascript": { 2728 | "version": "3.0.0", 2729 | "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-3.0.0.tgz", 2730 | "integrity": "sha512-skZcHYw2vEX4bw90nAr2iTTsz6x2SrHEnfxgKYmZlvJYBEZrvbKtobJWlQ20zczKb3bsHHXXTYt48zBA7ni9cw==", 2731 | "dev": true 2732 | }, 2733 | "set-blocking": { 2734 | "version": "2.0.0", 2735 | "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", 2736 | "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", 2737 | "dev": true 2738 | }, 2739 | "shebang-command": { 2740 | "version": "2.0.0", 2741 | "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", 2742 | "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", 2743 | "dev": true, 2744 | "requires": { 2745 | "shebang-regex": "^3.0.0" 2746 | } 2747 | }, 2748 | "shebang-regex": { 2749 | "version": "3.0.0", 2750 | "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", 2751 | "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", 2752 | "dev": true 2753 | }, 2754 | "signal-exit": { 2755 | "version": "3.0.3", 2756 | "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.3.tgz", 2757 | "integrity": "sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA==", 2758 | "dev": true 2759 | }, 2760 | "slash": { 2761 | "version": "3.0.0", 2762 | "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", 2763 | "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", 2764 | "dev": true 2765 | }, 2766 | "slice-ansi": { 2767 | "version": "2.1.0", 2768 | "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-2.1.0.tgz", 2769 | "integrity": "sha512-Qu+VC3EwYLldKa1fCxuuvULvSJOKEgk9pi8dZeCVK7TqBfUNTH4sFkk4joj8afVSfAYgJoSOetjx9QWOJ5mYoQ==", 2770 | "dev": true, 2771 | "requires": { 2772 | "ansi-styles": "^3.2.0", 2773 | "astral-regex": "^1.0.0", 2774 | "is-fullwidth-code-point": "^2.0.0" 2775 | } 2776 | }, 2777 | "source-map": { 2778 | "version": "0.5.7", 2779 | "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", 2780 | "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", 2781 | "dev": true 2782 | }, 2783 | "spawn-wrap": { 2784 | "version": "2.0.0", 2785 | "resolved": "https://registry.npmjs.org/spawn-wrap/-/spawn-wrap-2.0.0.tgz", 2786 | "integrity": "sha512-EeajNjfN9zMnULLwhZZQU3GWBoFNkbngTUPfaawT4RkMiviTxcX0qfhVbGey39mfctfDHkWtuecgQ8NJcyQWHg==", 2787 | "dev": true, 2788 | "requires": { 2789 | "foreground-child": "^2.0.0", 2790 | "is-windows": "^1.0.2", 2791 | "make-dir": "^3.0.0", 2792 | "rimraf": "^3.0.0", 2793 | "signal-exit": "^3.0.2", 2794 | "which": "^2.0.1" 2795 | }, 2796 | "dependencies": { 2797 | "rimraf": { 2798 | "version": "3.0.2", 2799 | "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", 2800 | "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", 2801 | "dev": true, 2802 | "requires": { 2803 | "glob": "^7.1.3" 2804 | } 2805 | } 2806 | } 2807 | }, 2808 | "spdx-correct": { 2809 | "version": "3.1.1", 2810 | "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.1.tgz", 2811 | "integrity": "sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==", 2812 | "dev": true, 2813 | "requires": { 2814 | "spdx-expression-parse": "^3.0.0", 2815 | "spdx-license-ids": "^3.0.0" 2816 | } 2817 | }, 2818 | "spdx-exceptions": { 2819 | "version": "2.3.0", 2820 | "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz", 2821 | "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==", 2822 | "dev": true 2823 | }, 2824 | "spdx-expression-parse": { 2825 | "version": "3.0.1", 2826 | "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", 2827 | "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", 2828 | "dev": true, 2829 | "requires": { 2830 | "spdx-exceptions": "^2.1.0", 2831 | "spdx-license-ids": "^3.0.0" 2832 | } 2833 | }, 2834 | "spdx-license-ids": { 2835 | "version": "3.0.5", 2836 | "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.5.tgz", 2837 | "integrity": "sha512-J+FWzZoynJEXGphVIS+XEh3kFSjZX/1i9gFBaWQcB+/tmpe2qUsSBABpcxqxnAxFdiUFEgAX1bjYGQvIZmoz9Q==", 2838 | "dev": true 2839 | }, 2840 | "sprintf-js": { 2841 | "version": "1.0.3", 2842 | "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", 2843 | "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", 2844 | "dev": true 2845 | }, 2846 | "string-width": { 2847 | "version": "3.1.0", 2848 | "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", 2849 | "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", 2850 | "dev": true, 2851 | "requires": { 2852 | "emoji-regex": "^7.0.1", 2853 | "is-fullwidth-code-point": "^2.0.0", 2854 | "strip-ansi": "^5.1.0" 2855 | }, 2856 | "dependencies": { 2857 | "ansi-regex": { 2858 | "version": "4.1.0", 2859 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", 2860 | "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", 2861 | "dev": true 2862 | }, 2863 | "strip-ansi": { 2864 | "version": "5.2.0", 2865 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", 2866 | "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", 2867 | "dev": true, 2868 | "requires": { 2869 | "ansi-regex": "^4.1.0" 2870 | } 2871 | } 2872 | } 2873 | }, 2874 | "string.prototype.trimend": { 2875 | "version": "1.0.1", 2876 | "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.1.tgz", 2877 | "integrity": "sha512-LRPxFUaTtpqYsTeNKaFOw3R4bxIzWOnbQ837QfBylo8jIxtcbK/A/sMV7Q+OAV/vWo+7s25pOE10KYSjaSO06g==", 2878 | "dev": true, 2879 | "requires": { 2880 | "define-properties": "^1.1.3", 2881 | "es-abstract": "^1.17.5" 2882 | }, 2883 | "dependencies": { 2884 | "es-abstract": { 2885 | "version": "1.17.6", 2886 | "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.6.tgz", 2887 | "integrity": "sha512-Fr89bON3WFyUi5EvAeI48QTWX0AyekGgLA8H+c+7fbfCkJwRWRMLd8CQedNEyJuoYYhmtEqY92pgte1FAhBlhw==", 2888 | "dev": true, 2889 | "requires": { 2890 | "es-to-primitive": "^1.2.1", 2891 | "function-bind": "^1.1.1", 2892 | "has": "^1.0.3", 2893 | "has-symbols": "^1.0.1", 2894 | "is-callable": "^1.2.0", 2895 | "is-regex": "^1.1.0", 2896 | "object-inspect": "^1.7.0", 2897 | "object-keys": "^1.1.1", 2898 | "object.assign": "^4.1.0", 2899 | "string.prototype.trimend": "^1.0.1", 2900 | "string.prototype.trimstart": "^1.0.1" 2901 | } 2902 | }, 2903 | "is-callable": { 2904 | "version": "1.2.0", 2905 | "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.0.tgz", 2906 | "integrity": "sha512-pyVD9AaGLxtg6srb2Ng6ynWJqkHU9bEM087AKck0w8QwDarTfNcpIYoU8x8Hv2Icm8u6kFJM18Dag8lyqGkviw==", 2907 | "dev": true 2908 | }, 2909 | "is-regex": { 2910 | "version": "1.1.0", 2911 | "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.0.tgz", 2912 | "integrity": "sha512-iI97M8KTWID2la5uYXlkbSDQIg4F6o1sYboZKKTDpnDQMLtUL86zxhgDet3Q2SriaYsyGqZ6Mn2SjbRKeLHdqw==", 2913 | "dev": true, 2914 | "requires": { 2915 | "has-symbols": "^1.0.1" 2916 | } 2917 | } 2918 | } 2919 | }, 2920 | "string.prototype.trimleft": { 2921 | "version": "2.1.1", 2922 | "resolved": "https://registry.npmjs.org/string.prototype.trimleft/-/string.prototype.trimleft-2.1.1.tgz", 2923 | "integrity": "sha512-iu2AGd3PuP5Rp7x2kEZCrB2Nf41ehzh+goo8TV7z8/XDBbsvc6HQIlUl9RjkZ4oyrW1XM5UwlGl1oVEaDjg6Ag==", 2924 | "dev": true, 2925 | "requires": { 2926 | "define-properties": "^1.1.3", 2927 | "function-bind": "^1.1.1" 2928 | } 2929 | }, 2930 | "string.prototype.trimright": { 2931 | "version": "2.1.1", 2932 | "resolved": "https://registry.npmjs.org/string.prototype.trimright/-/string.prototype.trimright-2.1.1.tgz", 2933 | "integrity": "sha512-qFvWL3/+QIgZXVmJBfpHmxLB7xsUXz6HsUmP8+5dRaC3Q7oKUv9Vo6aMCRZC1smrtyECFsIT30PqBJ1gTjAs+g==", 2934 | "dev": true, 2935 | "requires": { 2936 | "define-properties": "^1.1.3", 2937 | "function-bind": "^1.1.1" 2938 | } 2939 | }, 2940 | "string.prototype.trimstart": { 2941 | "version": "1.0.1", 2942 | "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.1.tgz", 2943 | "integrity": "sha512-XxZn+QpvrBI1FOcg6dIpxUPgWCPuNXvMD72aaRaUQv1eD4e/Qy8i/hFTe0BUmD60p/QA6bh1avmuPTfNjqVWRw==", 2944 | "dev": true, 2945 | "requires": { 2946 | "define-properties": "^1.1.3", 2947 | "es-abstract": "^1.17.5" 2948 | }, 2949 | "dependencies": { 2950 | "es-abstract": { 2951 | "version": "1.17.6", 2952 | "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.6.tgz", 2953 | "integrity": "sha512-Fr89bON3WFyUi5EvAeI48QTWX0AyekGgLA8H+c+7fbfCkJwRWRMLd8CQedNEyJuoYYhmtEqY92pgte1FAhBlhw==", 2954 | "dev": true, 2955 | "requires": { 2956 | "es-to-primitive": "^1.2.1", 2957 | "function-bind": "^1.1.1", 2958 | "has": "^1.0.3", 2959 | "has-symbols": "^1.0.1", 2960 | "is-callable": "^1.2.0", 2961 | "is-regex": "^1.1.0", 2962 | "object-inspect": "^1.7.0", 2963 | "object-keys": "^1.1.1", 2964 | "object.assign": "^4.1.0", 2965 | "string.prototype.trimend": "^1.0.1", 2966 | "string.prototype.trimstart": "^1.0.1" 2967 | } 2968 | }, 2969 | "is-callable": { 2970 | "version": "1.2.0", 2971 | "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.0.tgz", 2972 | "integrity": "sha512-pyVD9AaGLxtg6srb2Ng6ynWJqkHU9bEM087AKck0w8QwDarTfNcpIYoU8x8Hv2Icm8u6kFJM18Dag8lyqGkviw==", 2973 | "dev": true 2974 | }, 2975 | "is-regex": { 2976 | "version": "1.1.0", 2977 | "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.0.tgz", 2978 | "integrity": "sha512-iI97M8KTWID2la5uYXlkbSDQIg4F6o1sYboZKKTDpnDQMLtUL86zxhgDet3Q2SriaYsyGqZ6Mn2SjbRKeLHdqw==", 2979 | "dev": true, 2980 | "requires": { 2981 | "has-symbols": "^1.0.1" 2982 | } 2983 | } 2984 | } 2985 | }, 2986 | "strip-ansi": { 2987 | "version": "6.0.0", 2988 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", 2989 | "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", 2990 | "dev": true, 2991 | "requires": { 2992 | "ansi-regex": "^5.0.0" 2993 | } 2994 | }, 2995 | "strip-bom": { 2996 | "version": "4.0.0", 2997 | "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz", 2998 | "integrity": "sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==", 2999 | "dev": true 3000 | }, 3001 | "strip-json-comments": { 3002 | "version": "3.1.0", 3003 | "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.0.tgz", 3004 | "integrity": "sha512-e6/d0eBu7gHtdCqFt0xJr642LdToM5/cN4Qb9DbHjVx1CP5RyeM+zH7pbecEmDv/lBqb0QH+6Uqq75rxFPkM0w==", 3005 | "dev": true 3006 | }, 3007 | "supports-color": { 3008 | "version": "5.5.0", 3009 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", 3010 | "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", 3011 | "dev": true, 3012 | "requires": { 3013 | "has-flag": "^3.0.0" 3014 | } 3015 | }, 3016 | "table": { 3017 | "version": "5.4.6", 3018 | "resolved": "https://registry.npmjs.org/table/-/table-5.4.6.tgz", 3019 | "integrity": "sha512-wmEc8m4fjnob4gt5riFRtTu/6+4rSe12TpAELNSqHMfF3IqnA+CH37USM6/YR3qRZv7e56kAEAtd6nKZaxe0Ug==", 3020 | "dev": true, 3021 | "requires": { 3022 | "ajv": "^6.10.2", 3023 | "lodash": "^4.17.14", 3024 | "slice-ansi": "^2.1.0", 3025 | "string-width": "^3.0.0" 3026 | } 3027 | }, 3028 | "test-exclude": { 3029 | "version": "6.0.0", 3030 | "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz", 3031 | "integrity": "sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==", 3032 | "dev": true, 3033 | "requires": { 3034 | "@istanbuljs/schema": "^0.1.2", 3035 | "glob": "^7.1.4", 3036 | "minimatch": "^3.0.4" 3037 | } 3038 | }, 3039 | "text-table": { 3040 | "version": "0.2.0", 3041 | "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", 3042 | "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=", 3043 | "dev": true 3044 | }, 3045 | "to-fast-properties": { 3046 | "version": "2.0.0", 3047 | "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", 3048 | "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=", 3049 | "dev": true 3050 | }, 3051 | "to-regex-range": { 3052 | "version": "5.0.1", 3053 | "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", 3054 | "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", 3055 | "dev": true, 3056 | "requires": { 3057 | "is-number": "^7.0.0" 3058 | } 3059 | }, 3060 | "tsconfig-paths": { 3061 | "version": "3.9.0", 3062 | "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.9.0.tgz", 3063 | "integrity": "sha512-dRcuzokWhajtZWkQsDVKbWyY+jgcLC5sqJhg2PSgf4ZkH2aHPvaOY8YWGhmjb68b5qqTfasSsDO9k7RUiEmZAw==", 3064 | "dev": true, 3065 | "requires": { 3066 | "@types/json5": "^0.0.29", 3067 | "json5": "^1.0.1", 3068 | "minimist": "^1.2.0", 3069 | "strip-bom": "^3.0.0" 3070 | }, 3071 | "dependencies": { 3072 | "json5": { 3073 | "version": "1.0.1", 3074 | "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", 3075 | "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", 3076 | "dev": true, 3077 | "requires": { 3078 | "minimist": "^1.2.0" 3079 | } 3080 | }, 3081 | "strip-bom": { 3082 | "version": "3.0.0", 3083 | "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", 3084 | "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=", 3085 | "dev": true 3086 | } 3087 | } 3088 | }, 3089 | "type-check": { 3090 | "version": "0.4.0", 3091 | "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", 3092 | "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", 3093 | "dev": true, 3094 | "requires": { 3095 | "prelude-ls": "^1.2.1" 3096 | } 3097 | }, 3098 | "type-detect": { 3099 | "version": "4.0.8", 3100 | "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", 3101 | "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", 3102 | "dev": true 3103 | }, 3104 | "type-fest": { 3105 | "version": "0.8.1", 3106 | "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", 3107 | "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", 3108 | "dev": true 3109 | }, 3110 | "typedarray-to-buffer": { 3111 | "version": "3.1.5", 3112 | "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz", 3113 | "integrity": "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==", 3114 | "dev": true, 3115 | "requires": { 3116 | "is-typedarray": "^1.0.0" 3117 | } 3118 | }, 3119 | "uri-js": { 3120 | "version": "4.2.2", 3121 | "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz", 3122 | "integrity": "sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ==", 3123 | "dev": true, 3124 | "requires": { 3125 | "punycode": "^2.1.0" 3126 | } 3127 | }, 3128 | "uuid": { 3129 | "version": "3.4.0", 3130 | "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", 3131 | "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", 3132 | "dev": true 3133 | }, 3134 | "v8-compile-cache": { 3135 | "version": "2.1.1", 3136 | "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.1.1.tgz", 3137 | "integrity": "sha512-8OQ9CL+VWyt3JStj7HX7/ciTL2V3Rl1Wf5OL+SNTm0yK1KvtReVulksyeRnCANHHuUxHlQig+JJDlUhBt1NQDQ==", 3138 | "dev": true 3139 | }, 3140 | "validate-npm-package-license": { 3141 | "version": "3.0.4", 3142 | "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", 3143 | "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", 3144 | "dev": true, 3145 | "requires": { 3146 | "spdx-correct": "^3.0.0", 3147 | "spdx-expression-parse": "^3.0.0" 3148 | } 3149 | }, 3150 | "which": { 3151 | "version": "2.0.2", 3152 | "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", 3153 | "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", 3154 | "dev": true, 3155 | "requires": { 3156 | "isexe": "^2.0.0" 3157 | } 3158 | }, 3159 | "which-module": { 3160 | "version": "2.0.0", 3161 | "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", 3162 | "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=", 3163 | "dev": true 3164 | }, 3165 | "which-pm-runs": { 3166 | "version": "1.0.0", 3167 | "resolved": "https://registry.npmjs.org/which-pm-runs/-/which-pm-runs-1.0.0.tgz", 3168 | "integrity": "sha1-Zws6+8VS4LVd9rd4DKdGFfI60cs=", 3169 | "dev": true 3170 | }, 3171 | "wide-align": { 3172 | "version": "1.1.3", 3173 | "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.3.tgz", 3174 | "integrity": "sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA==", 3175 | "dev": true, 3176 | "requires": { 3177 | "string-width": "^1.0.2 || 2" 3178 | }, 3179 | "dependencies": { 3180 | "ansi-regex": { 3181 | "version": "3.0.0", 3182 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", 3183 | "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", 3184 | "dev": true 3185 | }, 3186 | "string-width": { 3187 | "version": "2.1.1", 3188 | "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", 3189 | "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", 3190 | "dev": true, 3191 | "requires": { 3192 | "is-fullwidth-code-point": "^2.0.0", 3193 | "strip-ansi": "^4.0.0" 3194 | } 3195 | }, 3196 | "strip-ansi": { 3197 | "version": "4.0.0", 3198 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", 3199 | "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", 3200 | "dev": true, 3201 | "requires": { 3202 | "ansi-regex": "^3.0.0" 3203 | } 3204 | } 3205 | } 3206 | }, 3207 | "word-wrap": { 3208 | "version": "1.2.3", 3209 | "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", 3210 | "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", 3211 | "dev": true 3212 | }, 3213 | "workerpool": { 3214 | "version": "6.0.0", 3215 | "resolved": "https://registry.npmjs.org/workerpool/-/workerpool-6.0.0.tgz", 3216 | "integrity": "sha512-fU2OcNA/GVAJLLyKUoHkAgIhKb0JoCpSjLC/G2vYKxUjVmQwGbRVeoPJ1a8U4pnVofz4AQV5Y/NEw8oKqxEBtA==", 3217 | "dev": true 3218 | }, 3219 | "wrap-ansi": { 3220 | "version": "5.1.0", 3221 | "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-5.1.0.tgz", 3222 | "integrity": "sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==", 3223 | "dev": true, 3224 | "requires": { 3225 | "ansi-styles": "^3.2.0", 3226 | "string-width": "^3.0.0", 3227 | "strip-ansi": "^5.0.0" 3228 | }, 3229 | "dependencies": { 3230 | "ansi-regex": { 3231 | "version": "4.1.0", 3232 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", 3233 | "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", 3234 | "dev": true 3235 | }, 3236 | "strip-ansi": { 3237 | "version": "5.2.0", 3238 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", 3239 | "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", 3240 | "dev": true, 3241 | "requires": { 3242 | "ansi-regex": "^4.1.0" 3243 | } 3244 | } 3245 | } 3246 | }, 3247 | "wrappy": { 3248 | "version": "1.0.2", 3249 | "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", 3250 | "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", 3251 | "dev": true 3252 | }, 3253 | "write": { 3254 | "version": "1.0.3", 3255 | "resolved": "https://registry.npmjs.org/write/-/write-1.0.3.tgz", 3256 | "integrity": "sha512-/lg70HAjtkUgWPVZhZcm+T4hkL8Zbtp1nFNOn3lRrxnlv50SRBv7cR7RqR+GMsd3hUXy9hWBo4CHTbFTcOYwig==", 3257 | "dev": true, 3258 | "requires": { 3259 | "mkdirp": "^0.5.1" 3260 | } 3261 | }, 3262 | "write-file-atomic": { 3263 | "version": "3.0.3", 3264 | "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz", 3265 | "integrity": "sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==", 3266 | "dev": true, 3267 | "requires": { 3268 | "imurmurhash": "^0.1.4", 3269 | "is-typedarray": "^1.0.0", 3270 | "signal-exit": "^3.0.2", 3271 | "typedarray-to-buffer": "^3.1.5" 3272 | } 3273 | }, 3274 | "xregexp": { 3275 | "version": "4.3.0", 3276 | "resolved": "https://registry.npmjs.org/xregexp/-/xregexp-4.3.0.tgz", 3277 | "integrity": "sha512-7jXDIFXh5yJ/orPn4SXjuVrWWoi4Cr8jfV1eHv9CixKSbU+jY4mxfrBwAuDvupPNKpMUY+FeIqsVw/JLT9+B8g==", 3278 | "dev": true, 3279 | "requires": { 3280 | "@babel/runtime-corejs3": "^7.8.3" 3281 | } 3282 | }, 3283 | "y18n": { 3284 | "version": "4.0.0", 3285 | "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.0.tgz", 3286 | "integrity": "sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w==", 3287 | "dev": true 3288 | }, 3289 | "yaml": { 3290 | "version": "1.10.0", 3291 | "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.0.tgz", 3292 | "integrity": "sha512-yr2icI4glYaNG+KWONODapy2/jDdMSDnrONSjblABjD9B4Z5LgiircSt8m8sRZFNi08kG9Sm0uSHtEmP3zaEGg==", 3293 | "dev": true 3294 | }, 3295 | "yargs": { 3296 | "version": "13.3.2", 3297 | "resolved": "https://registry.npmjs.org/yargs/-/yargs-13.3.2.tgz", 3298 | "integrity": "sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw==", 3299 | "dev": true, 3300 | "requires": { 3301 | "cliui": "^5.0.0", 3302 | "find-up": "^3.0.0", 3303 | "get-caller-file": "^2.0.1", 3304 | "require-directory": "^2.1.1", 3305 | "require-main-filename": "^2.0.0", 3306 | "set-blocking": "^2.0.0", 3307 | "string-width": "^3.0.0", 3308 | "which-module": "^2.0.0", 3309 | "y18n": "^4.0.0", 3310 | "yargs-parser": "^13.1.2" 3311 | }, 3312 | "dependencies": { 3313 | "find-up": { 3314 | "version": "3.0.0", 3315 | "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", 3316 | "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", 3317 | "dev": true, 3318 | "requires": { 3319 | "locate-path": "^3.0.0" 3320 | } 3321 | }, 3322 | "locate-path": { 3323 | "version": "3.0.0", 3324 | "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", 3325 | "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", 3326 | "dev": true, 3327 | "requires": { 3328 | "p-locate": "^3.0.0", 3329 | "path-exists": "^3.0.0" 3330 | } 3331 | }, 3332 | "p-locate": { 3333 | "version": "3.0.0", 3334 | "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", 3335 | "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", 3336 | "dev": true, 3337 | "requires": { 3338 | "p-limit": "^2.0.0" 3339 | } 3340 | } 3341 | } 3342 | }, 3343 | "yargs-parser": { 3344 | "version": "13.1.2", 3345 | "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.2.tgz", 3346 | "integrity": "sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg==", 3347 | "dev": true, 3348 | "requires": { 3349 | "camelcase": "^5.0.0", 3350 | "decamelize": "^1.2.0" 3351 | } 3352 | }, 3353 | "yargs-unparser": { 3354 | "version": "1.6.0", 3355 | "resolved": "https://registry.npmjs.org/yargs-unparser/-/yargs-unparser-1.6.0.tgz", 3356 | "integrity": "sha512-W9tKgmSn0DpSatfri0nx52Joq5hVXgeLiqR/5G0sZNDoLZFOr/xjBUDcShCOGNsBnEMNo1KAMBkTej1Hm62HTw==", 3357 | "dev": true, 3358 | "requires": { 3359 | "flat": "^4.1.0", 3360 | "lodash": "^4.17.15", 3361 | "yargs": "^13.3.0" 3362 | } 3363 | } 3364 | } 3365 | } 3366 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "js-to-json-logic", 3 | "version": "0.1.3", 4 | "description": "Generate JSON Logic objects using JavaScript syntax.", 5 | "main": "lib/index.js", 6 | "types": "js-to-json-logic.d.ts", 7 | "repository": { 8 | "type": "git", 9 | "url": "git://github.com/krismuniz/js-to-json-logic.git" 10 | }, 11 | "scripts": { 12 | "test": "nyc --reporter=html --reporter=text mocha", 13 | "lint": "eslint ." 14 | }, 15 | "husky": { 16 | "hooks": { 17 | "pre-commit": "npm test", 18 | "pre-push": "npm test" 19 | } 20 | }, 21 | "files": [ 22 | "*.d.ts", 23 | "lib" 24 | ], 25 | "runkitExample": "const transformJS = require('js-to-json-logic');", 26 | "keywords": [ 27 | "json", 28 | "logic", 29 | "rules", 30 | "code", 31 | "jsonlogic", 32 | "json-logic", 33 | "js-to-json" 34 | ], 35 | "author": "Kristian Muñiz (https://krismuniz.com)", 36 | "license": "MIT", 37 | "dependencies": { 38 | "meriyah": "^1.9.15" 39 | }, 40 | "devDependencies": { 41 | "chai": "^4.2.0", 42 | "eslint": "^7.3.1", 43 | "eslint-config-standard": "^14.1.0", 44 | "eslint-plugin-import": "^2.22.0", 45 | "eslint-plugin-node": "^11.0.0", 46 | "eslint-plugin-promise": "^4.2.1", 47 | "eslint-plugin-standard": "^4.0.1", 48 | "husky": "^4.2.5", 49 | "mocha": "^8.0.1", 50 | "nyc": "^15.1.0" 51 | } 52 | } 53 | -------------------------------------------------------------------------------- /test/index.js: -------------------------------------------------------------------------------- 1 | /* eslint-disable no-template-curly-in-string */ 2 | 3 | const expect = require('chai').expect 4 | const transformJS = require('../lib/index.js') 5 | 6 | function testOutput (inputRule, exp) { 7 | const result = transformJS(inputRule) 8 | 9 | if (typeof exp === 'function') { 10 | return exp(result) 11 | } 12 | 13 | return expect(result).to.deep.equal(exp) 14 | } 15 | 16 | function testError (inputRule, errorMessage) { 17 | return expect(() => transformJS(inputRule)) 18 | .to.throw(Error, errorMessage) 19 | .and.have.property('at') 20 | } 21 | 22 | describe('parseJS', function () { 23 | it('parse string literals', function () { 24 | testOutput('"hi"', 'hi') 25 | testOutput('say("hey!")', { say: ['hey!'] }) 26 | testOutput('blue + "hey"', { '+': [{ var: 'blue' }, 'hey'] }) 27 | testOutput("log('hi')", { log: ['hi'] }) 28 | }) 29 | 30 | it('parse identifiers (variables) and nullish values', function () { 31 | testOutput('', null) 32 | testOutput('myVar', { var: 'myVar' }) 33 | testOutput('null', null) 34 | testOutput('undefined', null) 35 | }) 36 | 37 | it('parse member expressions', function () { 38 | testOutput('arr[0]', { var: 'arr.0' }) 39 | testOutput('obj.prop', { var: 'obj.prop' }) 40 | testOutput('deep.object.that.has.deep.properties', { var: 'deep.object.that.has.deep.properties' }) 41 | testOutput('deep.object.that.has[0].multiple.arrays[3].in[2].it', { var: 'deep.object.that.has.0.multiple.arrays.3.in.2.it' }) 42 | testOutput('object.super.deep.function()', { 43 | 'object.super.deep.function': [] 44 | }) 45 | testOutput('object.super.deep.function(plus, "args")', { 46 | 'object.super.deep.function': [ 47 | { var: 'plus' }, 48 | 'args' 49 | ] 50 | }) 51 | }) 52 | 53 | it('parse numeric literals', function () { 54 | testOutput('0', 0) 55 | testOutput('10000000', 10000000) 56 | testOutput('10 + 10', { '+': [10, 10] }) 57 | testOutput('callFunction(10, 10, 20)', { callFunction: [10, 10, 20] }) 58 | }) 59 | 60 | it('parse regex literals', function () { 61 | testOutput('/word/', ['word', '']) 62 | testOutput('test(/^[2-9]\\d{2}-\\d{3}-\\d{4}$/gi)', { 63 | test: [ 64 | ['^[2-9]\\d{2}-\\d{3}-\\d{4}$', 'gi'] 65 | ] 66 | }) 67 | }) 68 | 69 | it('parse array expressions', function () { 70 | testOutput('[1,2,3]', [1, 2, 3]) 71 | testOutput('filter(["banana", "strawberry", "mango"], x => x === "mango")', { 72 | filter: [ 73 | [ 74 | 'banana', 75 | 'strawberry', 76 | 'mango' 77 | ], 78 | { 79 | '===': [ 80 | { var: '' }, 81 | 'mango' 82 | ] 83 | } 84 | ] 85 | }) 86 | testOutput('[a === b, c === d, e === f]', [ 87 | { '===': [{ var: 'a' }, { var: 'b' }] }, 88 | { '===': [{ var: 'c' }, { var: 'd' }] }, 89 | { '===': [{ var: 'e' }, { var: 'f' }] } 90 | ]) 91 | testOutput('[1, 2, ...myArray]', { 92 | merge: [ 93 | 1, 94 | 2, 95 | { var: 'myArray' } 96 | ] 97 | }) 98 | }) 99 | 100 | it('parse object expressions and ignore spread elements', function () { 101 | testOutput('({ a: 1, b: 2, ...c })', { 102 | a: 1, 103 | b: 2 104 | }) 105 | testOutput('console.log({ a: 1, b: 2, c: 3 })', { 106 | 'console.log': [ 107 | { 108 | a: 1, 109 | b: 2, 110 | c: 3 111 | } 112 | ] 113 | }) 114 | testOutput('say([{ a: "1", b: 2, c }])', { 115 | say: [ 116 | [ 117 | { a: '1', b: 2, c: { var: 'c' } } 118 | ] 119 | ] 120 | }) 121 | }) 122 | 123 | it('parse template literals', function () { 124 | testOutput('`Hello, ${first_name}!`', { 125 | cat: [ 126 | 'Hello, ', 127 | { var: 'first_name' }, 128 | '!' 129 | ] 130 | }) 131 | testOutput('`The price is $${1}`', { 132 | cat: [ 133 | 'The price is $', 134 | 1 135 | ] 136 | }) 137 | testOutput('`Hello there`', 'Hello there') 138 | testOutput('`${hi}`', { var: 'hi' }) 139 | testOutput('sup + `Hello, ${first_name}`', { 140 | '+': [ 141 | { 142 | var: 'sup' 143 | }, 144 | { 145 | cat: [ 146 | 'Hello, ', 147 | { var: 'first_name' } 148 | ] 149 | } 150 | ] 151 | }) 152 | testOutput('log(`Error: ${e.message}`)', { 153 | log: [ 154 | { 155 | cat: [ 156 | 'Error: ', 157 | { 158 | var: 'e.message' 159 | } 160 | ] 161 | } 162 | ] 163 | }) 164 | }) 165 | 166 | it('parse arithmetic expressions', function () { 167 | testOutput('2 + 2', { '+': [2, 2] }) 168 | testOutput('2 - 5', { '-': [2, 5] }) 169 | testOutput('price + 1', { '+': [{ var: 'price' }, 1] }) 170 | testOutput('2 * (1 - tax)', { 171 | '*': [ 172 | 2, 173 | { 174 | '-': [ 175 | 1, 176 | { var: 'tax' } 177 | ] 178 | } 179 | ] 180 | }) 181 | }) 182 | 183 | it('parse logical and comparison expressions', function () { 184 | testOutput('myVariable === 1', { '===': [{ var: 'myVariable' }, 1] }) 185 | testOutput('2 > 1', { '>': [2, 1] }) 186 | testOutput('price >= 2.40', { '>=': [{ var: 'price' }, 2.40] }) 187 | testOutput('price > wallet || price < 0', { 188 | or: [ 189 | { '>': [{ var: 'price' }, { var: 'wallet' }] }, 190 | { '<': [{ var: 'price' }, 0] } 191 | ] 192 | }) 193 | testOutput('a === b && c === d', { 194 | and: [ 195 | { '===': [{ var: 'a' }, { var: 'b' }] }, 196 | { '===': [{ var: 'c' }, { var: 'd' }] } 197 | ] 198 | }) 199 | }) 200 | 201 | it('parse conditional (ternary) expressions', function () { 202 | testOutput('a ? b : c', { 203 | if: [ 204 | { var: 'a' }, 205 | { var: 'b' }, 206 | { var: 'c' } 207 | ] 208 | }) 209 | testOutput('a ? (b ? 1 : 2) : 3', { 210 | if: [ 211 | { var: 'a' }, 212 | { 213 | if: [ 214 | { var: 'b' }, 215 | 1, 216 | 2 217 | ] 218 | }, 219 | 3 220 | ] 221 | }) 222 | testOutput('a > 0 ? "boom" : "bam"', { 223 | if: [ 224 | { '>': [{ var: 'a' }, 0] }, 225 | 'boom', 226 | 'bam' 227 | ] 228 | }) 229 | }) 230 | 231 | it('parse if statements', function () { 232 | testOutput('if (a === b) { 1 } else { 4 }', { 233 | if: [ 234 | { '===': [{ var: 'a' }, { var: 'b' }] }, 235 | 1, 236 | 4 237 | ] 238 | }) 239 | 240 | testOutput('if (a > b) { "a is greater than b" }', { 241 | if: [ 242 | { '>': [{ var: 'a' }, { var: 'b' }] }, 243 | 'a is greater than b' 244 | ] 245 | }) 246 | }) 247 | 248 | it('parse directives as strings', function () { 249 | testOutput('"use strict"', 'use strict') 250 | }) 251 | 252 | it('parse unary expressions', function () { 253 | testOutput('!variable', { '!': [{ var: 'variable' }] }) 254 | testOutput('!!variable', { '!!': [{ var: 'variable' }] }) 255 | testOutput('a > -1', { '>': [{ var: 'a' }, -1] }) 256 | testOutput('-1', -1) 257 | }) 258 | 259 | it('parse arrow function expressions', function () { 260 | testOutput('x => x + 1', { '+': [{ var: '' }, 1] }) 261 | testOutput('() => x + 1', { '+': [{ var: 'x' }, 1] }) 262 | testOutput('(x, y) => ({ lat: x, lon: y })', { lat: { var: 'x' }, lon: { var: 'y' } }) 263 | testOutput('reduce(arr, (current, accumulator) => { return current + accumulator })', { 264 | reduce: [ 265 | { 266 | var: 'arr' 267 | }, 268 | { 269 | '+': [ 270 | { var: 'current' }, 271 | { var: 'accumulator' } 272 | ] 273 | } 274 | ] 275 | }) 276 | testOutput('x => y + 1', { '+': [{ var: 'y' }, 1] }) 277 | testError('(x) => { a === b; c === d ; }', 'Only one-line arrow functions with implicit return are supported.') 278 | }) 279 | 280 | it('throw an error when using unsupported features', function () { 281 | testError('a++', 'Update expressions (x++, ++x, x--, --x, etc.) are not supported.') 282 | testError('log`hi`', 'Tagged template expressions are not supported.') 283 | testError('new Book()', 'Expressions that use the `new` keyword are not supported.') 284 | testError('class Component {}', 'Classes are not supported.') 285 | testError('function x () {}', 'Function declarations are not supported.') 286 | testError('while (a > b) {}', 'While-loops are not supported.') 287 | testError('for (let i; i < 10; i++) {}', 'For-loops are not supported.') 288 | testError('switch (rule) { }', 'Switch statements are not supported.') 289 | testError('const x = []', 'Variable (var, let, const) declarations are not supported.') 290 | testError('x = 1', 'Assignments not supported.') 291 | testError('with (a) {}', 'Could not parse code. [1:6]: Strict mode code may not include a with statement') 292 | testError('a ?? b', "Could not parse code. Invalid node 'CoalesceExpression'. Not supported.") 293 | }) 294 | 295 | it('throw an error when providing a multi-expression block statement or directives', function () { 296 | testError('{ a === b; c === d }', 'Block statements can only have one expression statement.') 297 | testError('a === b; b === c;', 'Only one expression statement allowed.') 298 | testError('"hi";"hey";', 'Only one expression statement allowed.') 299 | }) 300 | 301 | it('throw an error when syntax is invalid', function () { 302 | testError('1 / function', "Could not parse code. [1:12]: Expected '('") 303 | testError('99999eeee999e9e9e9', 'Could not parse code. [1:6]: Non-number found after exponent indicator') 304 | testError('#great', "Private names are not supported. Unexpected character '#'") 305 | }) 306 | }) 307 | --------------------------------------------------------------------------------