├── .babelrc ├── .editorconfig ├── .gitignore ├── .travis.yml ├── LICENSE ├── README.md ├── package.json ├── src ├── ast-util.js ├── generators.js ├── index.js └── util.js ├── test ├── babel-plugin-jsdoc-to-assert-test.js ├── fixtures │ ├── ArrowFunctionExpression │ │ ├── .babelrc │ │ ├── actual.js │ │ └── expected.js │ ├── AssertOption │ │ ├── .babelrc │ │ ├── actual.js │ │ └── expected.js │ ├── ClassMethod │ │ ├── .babelrc │ │ ├── actual.js │ │ └── expected.js │ ├── Default-Option-Generator │ │ ├── .babelrc │ │ ├── actual.js │ │ └── expected.js │ ├── ExportDefaultFunctionDeclaration │ │ ├── .babelrc │ │ ├── actual.js │ │ └── expected.js │ ├── ExportDefaultFunctionDestructuring │ │ ├── .babelrc │ │ ├── actual.js │ │ └── expected.js │ ├── ExportFunctionDeclaration │ │ ├── .babelrc │ │ ├── actual.js │ │ └── expected.js │ ├── FunctionDeclaration │ │ ├── .babelrc │ │ ├── actual.js │ │ └── expected.js │ ├── FunctionExpression │ │ ├── .babelrc │ │ ├── actual.js │ │ └── expected.js │ ├── NOT_SUPPORT_Type_Object │ │ ├── .babelrc │ │ ├── actual.js │ │ └── expected.js │ ├── NoTypeOption │ │ ├── .babelrc │ │ ├── actual.js │ │ └── expected.js │ ├── ObjectMethod │ │ ├── .babelrc │ │ ├── actual.js │ │ └── expected.js │ ├── ObjectMethodB │ │ ├── .babelrc │ │ ├── actual.js │ │ └── expected.js │ ├── ObjectMethod_with_es2015 │ │ ├── .babelrc │ │ ├── actual.js │ │ └── expected.js │ ├── SpecGenerator-param │ │ ├── .babelrc │ │ ├── actual.js │ │ └── expected.js │ ├── SpecGenerator-type │ │ ├── .babelrc │ │ ├── actual.js │ │ └── expected.js │ ├── TypeCustomObject │ │ ├── .babelrc │ │ ├── actual.js │ │ └── expected.js │ ├── TypeExportExpression │ │ ├── .babelrc │ │ ├── actual.js │ │ └── expected.js │ ├── TypeString │ │ ├── .babelrc │ │ ├── actual.js │ │ └── expected.js │ ├── TypeThisAssignMent │ │ ├── .babelrc │ │ ├── actual.js │ │ └── expected.js │ ├── TypeVariableAssignMent │ │ ├── .babelrc │ │ ├── actual.js │ │ └── expected.js │ ├── VariableDeclaration │ │ ├── .babelrc │ │ ├── actual.js │ │ └── expected.js │ └── multiple-comments │ │ ├── .babelrc │ │ ├── actual.js │ │ └── expected.js └── mocha.opts └── yarn.lock /.babelrc: -------------------------------------------------------------------------------- 1 | { 2 | "presets": [ 3 | "@babel/preset-env" 4 | ] 5 | } 6 | -------------------------------------------------------------------------------- /.editorconfig: -------------------------------------------------------------------------------- 1 | [*.js] 2 | charset = utf-8 3 | indent_style = space 4 | indent_size = 2 -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | ### https://raw.github.com/github/gitignore/608690d6b9a78c2a003affc792e49a84905b3118/Node.gitignore 2 | 3 | # Logs 4 | logs 5 | *.log 6 | 7 | # Runtime data 8 | pids 9 | *.pid 10 | *.seed 11 | 12 | # Directory for instrumented libs generated by jscoverage/JSCover 13 | lib-cov 14 | 15 | # Coverage directory used by tools like istanbul 16 | coverage 17 | 18 | # Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files) 19 | .grunt 20 | 21 | # node-waf configuration 22 | .lock-wscript 23 | 24 | # Compiled binary addons (http://nodejs.org/api/addons.html) 25 | build/Release 26 | 27 | # Dependency directory 28 | # https://www.npmjs.org/doc/misc/npm-faq.html#should-i-check-my-node_modules-folder-into-git- 29 | node_modules 30 | 31 | # Debug log from npm 32 | npm-debug.log 33 | 34 | 35 | ### https://raw.github.com/github/gitignore/608690d6b9a78c2a003affc792e49a84905b3118/Global/JetBrains.gitignore 36 | 37 | # Covers JetBrains IDEs: IntelliJ, RubyMine, PhpStorm, AppCode, PyCharm 38 | 39 | *.iml 40 | 41 | ## Directory-based project format: 42 | .idea/ 43 | # if you remove the above rule, at least ignore the following: 44 | 45 | # User-specific stuff: 46 | # .idea/workspace.xml 47 | # .idea/tasks.xml 48 | # .idea/dictionaries 49 | 50 | # Sensitive or high-churn files: 51 | # .idea/dataSources.ids 52 | # .idea/dataSources.xml 53 | # .idea/sqlDataSources.xml 54 | # .idea/dynamic.xml 55 | # .idea/uiDesigner.xml 56 | 57 | # Gradle: 58 | # .idea/gradle.xml 59 | # .idea/libraries 60 | 61 | # Mongo Explorer plugin: 62 | # .idea/mongoSettings.xml 63 | 64 | ## File-based project format: 65 | *.ipr 66 | *.iws 67 | 68 | ## Plugin-specific files: 69 | 70 | # IntelliJ 71 | out/ 72 | 73 | # mpeltonen/sbt-idea plugin 74 | .idea_modules/ 75 | 76 | # JIRA plugin 77 | atlassian-ide-plugin.xml 78 | 79 | # Crashlytics plugin (for Android Studio and IntelliJ) 80 | com_crashlytics_export_strings.xml 81 | crashlytics.properties 82 | crashlytics-build.properties 83 | 84 | 85 | /lib 86 | -------------------------------------------------------------------------------- /.travis.yml: -------------------------------------------------------------------------------- 1 | sudo: false 2 | language: node_js 3 | node_js: "stable" 4 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | Copyright (c) 2016 azu 2 | 3 | Permission is hereby granted, free of charge, to any person obtaining a copy 4 | of this software and associated documentation files (the "Software"), to deal 5 | in the Software without restriction, including without limitation the rights 6 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 7 | copies of the Software, and to permit persons to whom the Software is 8 | furnished to do so, subject to the following conditions: 9 | 10 | The above copyright notice and this permission notice shall be included in all 11 | copies or substantial portions of the Software. 12 | 13 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 14 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 15 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 16 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 17 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 18 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 19 | SOFTWARE. 20 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # babel-plugin-jsdoc-to-assert [![Build Status](https://travis-ci.org/azu/babel-plugin-jsdoc-to-assert.svg?branch=master)](https://travis-ci.org/azu/babel-plugin-jsdoc-to-assert) 2 | 3 | Babel plugin for [jsdoc-to-assert](https://github.com/azu/jsdoc-to-assert "jsdoc-to-assert"). 4 | 5 | Preset version: [babel-preset-jsdoc-to-assert: Babel preset for jsdoc-to-assert](https://github.com/azu/babel-preset-jsdoc-to-assert) 6 | 7 | This plugin JSDoc(`@param` and `@type`) to assertion method for runtime testing. 8 | 9 | ## `@param` 10 | 11 | ```js 12 | /** 13 | * @param {number} param - this is a param. 14 | * @param {string} b - this is a param. 15 | * @param {string[]} [c] - this is a param. 16 | */ 17 | function myFunc(param, b, c) { 18 | } 19 | ``` 20 | 21 | to 22 | 23 | ```js 24 | /** 25 | * @param {number} param - this is a param. 26 | * @param {string} b - this is a param. 27 | * @param {string[]} [c] - this is a param. 28 | */ 29 | function myFunc(param, b, c) { 30 | console.assert(typeof param === 'number'); 31 | console.assert(typeof b === 'string'); 32 | } 33 | ``` 34 | 35 | ### `@type` 36 | 37 | ```js 38 | /** 39 | * @type {string} 40 | */ 41 | const value = "s"; 42 | ``` 43 | 44 | to 45 | 46 | ```js 47 | /** 48 | * @type {string} 49 | */ 50 | const value = "s"; 51 | console.assert(typeof value === "string"); 52 | ``` 53 | 54 | ## Installation 55 | 56 | npm install babel-plugin-jsdoc-to-assert 57 | 58 | ## Usage 59 | 60 | Via `.babelrc` 61 | 62 | ```json 63 | { 64 | "plugins": [ 65 | "jsdoc-to-assert" 66 | ] 67 | } 68 | ``` 69 | 70 | In development only: 71 | 72 | ```json 73 | { 74 | "presets": [ 75 | "es2015" 76 | ], 77 | "env": { 78 | "development": { 79 | "plugins": [ 80 | "jsdoc-to-assert" 81 | ] 82 | } 83 | } 84 | } 85 | ``` 86 | 87 | If build files with `NODE_ENV=production`, don't convert JSDoc to assert. 88 | 89 | "build": "NODE_ENV=production babel src --out-dir lib --source-maps", 90 | 91 | ## Options 92 | 93 | - `checkAtParam`: boolean 94 | - Default: `true` 95 | - Check typing of `@param` 96 | - `checkAtType`: boolean 97 | - Default: `false` 98 | - Check typing of `@type` 99 | 100 | ## FAQ 101 | 102 | Q. Try to use this, but throw parsing error: 103 | 104 | ``` 105 | ERROR in ./src/js/framework/Context.js 106 | Module build failed: SyntaxError: Unterminated string constant (3:16) 107 | at Parser.pp.raise (/Users/azu/.ghq/github.com/azu/svg-feeling/node_modules/babylon/index.js:1378:13) 108 | at Parser.readString (/Users/azu/.ghq/github.com/azu/svg-feeling/node_modules/babylon/index.js:5402:49) 109 | at Parser.getTokenFromCode (/Users/azu/.ghq/github.com/azu/svg-feeling/node_modules/babylon/index.js:52 110 | .... 111 | @ ./src/index.js 24:15-48 112 | ``` 113 | 114 | A. It seem to be a bug of `babel-plugin-jsdoc-to-assert`. 115 | Please file issue with your code :bow: 116 | 117 | Q. Why `checkAtType` is default disable? 118 | 119 | It is a problem of babel transform order. 120 | 121 | ES2015 -> jsdoc-to-assert cause following problem. 122 | 123 | ``` 124 | AssertionError: Invalid JSDoc: typeof _this === "string" 125 | + expected - actual 126 | ``` 127 | 128 | ## Tests 129 | 130 | npm test 131 | 132 | ## Contributing 133 | 134 | 1. Fork it! 135 | 2. Create your feature branch: `git checkout -b my-new-feature` 136 | 3. Commit your changes: `git commit -am 'Add some feature'` 137 | 4. Push to the branch: `git push origin my-new-feature` 138 | 5. Submit a pull request :D 139 | 140 | ## License 141 | 142 | MIT 143 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "babel-plugin-jsdoc-to-assert", 3 | "repository": { 4 | "type": "git", 5 | "url": "git+https://github.com/azu/babel-plugin-jsdoc-to-assert.git" 6 | }, 7 | "author": "azu", 8 | "email": "azuciao@gmail.com", 9 | "homepage": "https://github.com/azu/babel-plugin-jsdoc-to-assert", 10 | "license": "MIT", 11 | "files": [ 12 | "src/", 13 | "lib/" 14 | ], 15 | "bugs": { 16 | "url": "https://github.com/azu/babel-plugin-jsdoc-to-assert/issues" 17 | }, 18 | "version": "4.0.0", 19 | "description": "Babel plugin convert jsdoc to assertion.", 20 | "main": "lib/index.js", 21 | "scripts": { 22 | "build": "babel src --out-dir lib --source-maps", 23 | "watch": "babel src --out-dir lib --watch --source-maps", 24 | "prepublish": "npm run --if-present build", 25 | "test": "mocha", 26 | "updateSnapshot": "UPDATE_SNAPSHOT=1 mocha" 27 | }, 28 | "keywords": [ 29 | "babel", 30 | "plugin", 31 | "assert", 32 | "testing", 33 | "coc" 34 | ], 35 | "devDependencies": { 36 | "@babel/cli": "^7.0.0", 37 | "@babel/core": "^7.0.0", 38 | "@babel/preset-env": "^7.0.0", 39 | "@babel/register": "^7.0.0", 40 | "babel-plugin-add-module-exports": "^1.0.0", 41 | "mocha": "^5.2.0" 42 | }, 43 | "dependencies": { 44 | "doctrine": "^2.0.0", 45 | "jsdoc-to-assert": "^2.6.1" 46 | } 47 | } 48 | -------------------------------------------------------------------------------- /src/ast-util.js: -------------------------------------------------------------------------------- 1 | // LICENSE : MIT 2 | "use strict"; 3 | /** 4 | * @param {Object} node 5 | * @returns {string|undefined} 6 | * @example 7 | * this.value = "string" 8 | * => return "this.value" 9 | * 10 | */ 11 | export function AssignmentExpressionLeftToString(node) { 12 | if (node.type !== "MemberExpression" && node.type !== "Identifier") { 13 | return; 14 | } 15 | if (node.type === "Identifier") { 16 | return node.name; 17 | } 18 | if (node.object.type === "ThisExpression") { 19 | return ["this", node.property.name].join('.') 20 | } 21 | return [node.object.name, node.property.name].join('.'); 22 | } -------------------------------------------------------------------------------- /src/generators.js: -------------------------------------------------------------------------------- 1 | // LICENSE : MIT 2 | "use strict"; 3 | const doctrine = require("doctrine"); 4 | import {trimSpaceEachLine} from "./util"; 5 | export class SimpleGenerator { 6 | assert(expression) { 7 | const trimmedExpression = trimSpaceEachLine(expression.split("\n")).join(""); 8 | return `console.assert(${trimmedExpression});`; 9 | } 10 | } 11 | export class NodeAssertGenerator { 12 | assert(expression) { 13 | const trimmedExpression = trimSpaceEachLine(expression.split("\n")).join(""); 14 | return `assert(${trimmedExpression}, 'Invalid JSDoc: ${trimmedExpression}');`; 15 | } 16 | } 17 | export class SpecGenerator { 18 | constructor(tag) { 19 | this.nameOfValue = tag.name; 20 | this.typeString = doctrine.type.stringify(tag.type, {compact: true}); 21 | this.jsdocLikeString = `@${tag.title} {${this.typeString}} ${tag.name}`; 22 | } 23 | 24 | assert(expression) { 25 | const trimmedExpression = trimSpaceEachLine(expression.split("\n")).join(""); 26 | const expectedMessage = `Expected type: ${this.jsdocLikeString}`; 27 | const actualMessage = `Actual value:`; 28 | const failureMessage = `Failure assertion:`; 29 | const actualValue = this.nameOfValue; 30 | return `console.assert(${trimmedExpression}, '${expectedMessage}\\n${actualMessage}', ${actualValue},'\\n${failureMessage} ${trimmedExpression}');`; 31 | } 32 | } 33 | export class ThrowGenerator { 34 | assert(expression) { 35 | const trimmedExpression = trimSpaceEachLine(expression.split("\n")).join(""); 36 | return `if(!(${trimmedExpression})){ throw new TypeError('Invalid JSDoc: ${trimmedExpression}'); }`; 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /src/index.js: -------------------------------------------------------------------------------- 1 | // LICENSE : MIT 2 | "use strict"; 3 | import {CommentConverter} from "jsdoc-to-assert" 4 | import {AssignmentExpressionLeftToString} from "./ast-util"; 5 | import {trimSpaceEachLine} from "./util"; 6 | import {NodeAssertGenerator, SimpleGenerator, ThrowGenerator, SpecGenerator} from "./generators"; 7 | /** 8 | * `comment` node contain @type, return true 9 | * @param {Object} comment 10 | * @returns {boolean} 11 | */ 12 | function containTypeComment(comment) { 13 | if (comment == null) { 14 | return false; 15 | } 16 | return /@type/.test(comment.value); 17 | } 18 | /** 19 | * if the `path` have not comments, return true 20 | * @param {Object} path 21 | * @returns {boolean} 22 | */ 23 | function maybeSkip(path) { 24 | if(path.__jsdoc_to_assert_checked__) { 25 | return true; 26 | } 27 | const {node} = path; 28 | if (node.leadingComments != null && node.leadingComments.length > 0) { 29 | return false; 30 | } 31 | return true; 32 | } 33 | 34 | /** 35 | * @param {Object} [options] 36 | * @returns {{Generator: *}} 37 | */ 38 | function useGenerator(options = {}) { 39 | // more simple console.assert 40 | if (options.simple) { 41 | return { 42 | Generator: SimpleGenerator 43 | } 44 | } 45 | // throw new Error 46 | if (options.throw) { 47 | return { 48 | Generator: ThrowGenerator 49 | } 50 | } 51 | // use `assert` module 52 | // It depended on https://github.com/azu/babel-plugin-auto-import-assert 53 | if (options.useNodeAssert) { 54 | return { 55 | Generator: NodeAssertGenerator 56 | } 57 | } 58 | // Default: SpecGenerator 59 | // Readable output for human 60 | return { 61 | Generator: SpecGenerator 62 | }; 63 | } 64 | export default function({types: t, template}) { 65 | // work only { checkAtType: true } 66 | const injectTypeAssert = (declarationsPath, identifierName, leadingComments, options) => { 67 | if (!options.checkAtType) { 68 | return; 69 | } 70 | const converterOptions = useGenerator(options); 71 | const comment = leadingComments[leadingComments.length - 1]; 72 | if (comment.type !== 'CommentBlock') { 73 | return; 74 | } 75 | const asserts = CommentConverter.toTypeAsserts(identifierName, comment, converterOptions); 76 | // no have assert, ignore this 77 | if (asserts.length === 0) { 78 | return; 79 | } 80 | const functionDeclarationString = trimSpaceEachLine(asserts).join("\n"); 81 | const builtAssert = template(functionDeclarationString)(); 82 | if (builtAssert) { 83 | declarationsPath.insertAfter(builtAssert); 84 | } 85 | }; 86 | // work only { checkAtParam: true|undefined } 87 | const injectParameterAssert = (path, leadingComments, options) => { 88 | // default: enable 89 | if (options.checkAtParam === false) { 90 | return; 91 | } 92 | const converterOptions = useGenerator(options); 93 | const comment = leadingComments[leadingComments.length - 1]; 94 | if (comment.type !== 'CommentBlock') { 95 | return; 96 | } 97 | const asserts = CommentConverter.toAsserts(comment, converterOptions); 98 | // no have assert, ignore this 99 | if (asserts.length === 0) { 100 | return; 101 | } 102 | // add check mark and it is not enumerable 103 | Object.defineProperty(path, "__jsdoc_to_assert_checked__", { 104 | enumerable: false, 105 | value: true 106 | }); 107 | const functionDeclarationString = trimSpaceEachLine(asserts).join("\n"); 108 | const builtAssert = template(functionDeclarationString)(); 109 | const bodyPath = path.get("body"); 110 | if (bodyPath && bodyPath.node && bodyPath.node["body"]) { 111 | bodyPath.unshiftContainer("body", builtAssert); 112 | } 113 | }; 114 | return { 115 | visitor: { 116 | ["AssignmentExpression"](path){ 117 | const parentPath = path.parentPath; 118 | if (maybeSkip(parentPath)) { 119 | return; 120 | } 121 | const {node} = path; 122 | const leadingComments = parentPath.node.leadingComments; 123 | if (leadingComments == null) { 124 | return; 125 | } 126 | const identifierName = AssignmentExpressionLeftToString(node.left); 127 | const isTypeComments = leadingComments.some(containTypeComment); 128 | if (identifierName && isTypeComments) { 129 | injectTypeAssert(path, identifierName, leadingComments, this.opts); 130 | } 131 | }, 132 | ["ArrowFunctionExpression|VariableDeclaration"](path){ 133 | if (maybeSkip(path)) { 134 | return; 135 | } 136 | const {node} = path; 137 | if (node.declarations) { 138 | const firstDeclaration = path.get('declarations')[0]; 139 | if (firstDeclaration.isVariableDeclaration()) { 140 | return; 141 | } 142 | const init = firstDeclaration.get("init"); 143 | if (!init) { 144 | return; 145 | } 146 | const leadingComments = node.leadingComments; 147 | const isTypeComments = leadingComments.some(containTypeComment); 148 | if (isTypeComments) { 149 | if (firstDeclaration.node.id == null) { 150 | return; 151 | } 152 | if (firstDeclaration.node.id.type !== "Identifier") { 153 | return; 154 | } 155 | const identifierName = firstDeclaration.node.id.name; 156 | injectTypeAssert(path, identifierName, leadingComments, this.opts); 157 | } else { 158 | injectParameterAssert(init, leadingComments, this.opts) 159 | } 160 | } 161 | }, 162 | ["FunctionExpression"](path){ 163 | if (maybeSkip(path.parentPath)) { 164 | return; 165 | } 166 | const leadingComments = path.parentPath.node.leadingComments; 167 | if (leadingComments == null) { 168 | return; 169 | } 170 | injectParameterAssert(path, leadingComments, this.opts); 171 | }, 172 | ["ExportNamedDeclaration|ExportDefaultDeclaration"](path){ 173 | if (maybeSkip(path)) { 174 | return; 175 | } 176 | const {node} = path; 177 | if (node.declaration) { 178 | let declaration = path.get("declaration"); 179 | if (declaration.isVariableDeclaration()) { 180 | return; 181 | } 182 | injectParameterAssert(declaration, node.leadingComments, this.opts) 183 | } 184 | }, 185 | // method 186 | ["ObjectMethod|ClassMethod|FunctionDeclaration"](path){ 187 | if (maybeSkip(path)) { 188 | return; 189 | } 190 | const {node} = path; 191 | injectParameterAssert(path, node.leadingComments, this.opts); 192 | } 193 | } 194 | }; 195 | } -------------------------------------------------------------------------------- /src/util.js: -------------------------------------------------------------------------------- 1 | // LICENSE : MIT 2 | "use strict"; 3 | export function trimSpaceEachLine(texts) { 4 | return texts 5 | .filter(line => line != null) 6 | .map(line => line.trim()); 7 | } -------------------------------------------------------------------------------- /test/babel-plugin-jsdoc-to-assert-test.js: -------------------------------------------------------------------------------- 1 | const assert = require('assert'); 2 | const fs = require('fs'); 3 | const path = require('path'); 4 | import { transformFileSync } from '@babel/core'; 5 | 6 | function normalize(str) { 7 | return str.replace(/^\s+|\s+$/, '').replace(/\r?\n/g, '\n'); 8 | } 9 | 10 | describe('JSDoc plugin', () => { 11 | const fixturesDir = path.join(__dirname, 'fixtures'); 12 | fs.readdirSync(fixturesDir).map((caseName) => { 13 | it(`should generate assertions for ${caseName.replace(/-/g, ' ')}`, function() { 14 | const fixtureDir = path.join(fixturesDir, caseName); 15 | let actualPath = path.join(fixtureDir, 'actual.js'); 16 | const actual = transformFileSync(actualPath).code; 17 | 18 | if (path.sep === '\\') { 19 | // Specific case of windows, transformFileSync return code with '/' 20 | actualPath = actualPath.replace(/\\/g, '/'); 21 | } 22 | 23 | const expectedPath = path.join(fixtureDir, 'expected.js'); 24 | const expected = fs.readFileSync( 25 | expectedPath 26 | ).toString().replace(/%FIXTURE_PATH%/g, actualPath); 27 | 28 | // UPDATE_SNAPSHOT=1 npm test で呼び出したときはスナップショットを更新 29 | if (process.env.UPDATE_SNAPSHOT) { 30 | fs.writeFileSync(expectedPath, actual); 31 | this.skip(); // スキップ 32 | return; 33 | } 34 | assert.equal(normalize(actual), normalize(expected)); 35 | }); 36 | }); 37 | }); 38 | -------------------------------------------------------------------------------- /test/fixtures/ArrowFunctionExpression/.babelrc: -------------------------------------------------------------------------------- 1 | { 2 | "plugins": [ 3 | [ 4 | "../../../src/", 5 | { 6 | "simple": true 7 | } 8 | ] 9 | ] 10 | } 11 | -------------------------------------------------------------------------------- /test/fixtures/ArrowFunctionExpression/actual.js: -------------------------------------------------------------------------------- 1 | /** 2 | * @param {number} param - this is a param. 3 | * @param {string} b - this is a param. 4 | * @param {string[]} [c] - this is a param. 5 | */ 6 | const myFunc = (param, b, c) => { 7 | }; 8 | -------------------------------------------------------------------------------- /test/fixtures/ArrowFunctionExpression/expected.js: -------------------------------------------------------------------------------- 1 | /** 2 | * @param {number} param - this is a param. 3 | * @param {string} b - this is a param. 4 | * @param {string[]} [c] - this is a param. 5 | */ 6 | const myFunc = (param, b, c) => { 7 | console.assert(typeof param === "number"); 8 | console.assert(typeof b === "string"); 9 | }; -------------------------------------------------------------------------------- /test/fixtures/AssertOption/.babelrc: -------------------------------------------------------------------------------- 1 | { 2 | "plugins": [ 3 | [ 4 | "../../../src/", 5 | { 6 | "useNodeAssert": true 7 | } 8 | ] 9 | ] 10 | } 11 | -------------------------------------------------------------------------------- /test/fixtures/AssertOption/actual.js: -------------------------------------------------------------------------------- 1 | /** 2 | * @param {number} param - this is a param. 3 | * @param {string} b - this is a param. 4 | * @param {string[]} [c] - this is a param. 5 | */ 6 | const myFunc = (param, b, c) => { 7 | }; 8 | -------------------------------------------------------------------------------- /test/fixtures/AssertOption/expected.js: -------------------------------------------------------------------------------- 1 | /** 2 | * @param {number} param - this is a param. 3 | * @param {string} b - this is a param. 4 | * @param {string[]} [c] - this is a param. 5 | */ 6 | const myFunc = (param, b, c) => { 7 | assert(typeof param === "number", 'Invalid JSDoc: typeof param === "number"'); 8 | assert(typeof b === "string", 'Invalid JSDoc: typeof b === "string"'); 9 | }; -------------------------------------------------------------------------------- /test/fixtures/ClassMethod/.babelrc: -------------------------------------------------------------------------------- 1 | { 2 | "plugins": [ 3 | [ 4 | "../../../src/", 5 | { 6 | "simple": true 7 | } 8 | ] 9 | ] 10 | } 11 | -------------------------------------------------------------------------------- /test/fixtures/ClassMethod/actual.js: -------------------------------------------------------------------------------- 1 | class X { 2 | /** 3 | * @param {number} x - this is a param. 4 | * @param {string} y - this is a param. 5 | */ 6 | method(x, y){ 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /test/fixtures/ClassMethod/expected.js: -------------------------------------------------------------------------------- 1 | class X { 2 | /** 3 | * @param {number} x - this is a param. 4 | * @param {string} y - this is a param. 5 | */ 6 | method(x, y) { 7 | console.assert(typeof x === "number"); 8 | console.assert(typeof y === "string"); 9 | } 10 | 11 | } -------------------------------------------------------------------------------- /test/fixtures/Default-Option-Generator/.babelrc: -------------------------------------------------------------------------------- 1 | { 2 | "plugins": [ 3 | "../../../src/" 4 | ] 5 | } 6 | -------------------------------------------------------------------------------- /test/fixtures/Default-Option-Generator/actual.js: -------------------------------------------------------------------------------- 1 | /** 2 | * @param {number} x - this is a param. 3 | * @param {string[]} y - this is a param. 4 | */ 5 | function myFunc(x, y) { 6 | } -------------------------------------------------------------------------------- /test/fixtures/Default-Option-Generator/expected.js: -------------------------------------------------------------------------------- 1 | /** 2 | * @param {number} x - this is a param. 3 | * @param {string[]} y - this is a param. 4 | */ 5 | function myFunc(x, y) { 6 | console.assert(typeof x === "number", 'Expected type: @param {number} x\nActual value:', x, '\nFailure assertion: typeof x === "number"'); 7 | console.assert(Array.isArray(y) && y.every(function (item) { 8 | return typeof item === "string"; 9 | }), 'Expected type: @param {Array.} y\nActual value:', y, '\nFailure assertion: Array.isArray(y) && y.every(function(item){ return (typeof item === "string"); })'); 10 | } -------------------------------------------------------------------------------- /test/fixtures/ExportDefaultFunctionDeclaration/.babelrc: -------------------------------------------------------------------------------- 1 | { 2 | "plugins": [ 3 | [ 4 | "../../../src/", 5 | { 6 | "simple": true 7 | } 8 | ] 9 | ] 10 | } 11 | -------------------------------------------------------------------------------- /test/fixtures/ExportDefaultFunctionDeclaration/actual.js: -------------------------------------------------------------------------------- 1 | /** 2 | * @param {number} param - this is a param. 3 | * @param {string} b - this is a param. 4 | * @param {string[]} [c] - this is a param. 5 | */ 6 | export default function myFunc(param, b, c) { 7 | } -------------------------------------------------------------------------------- /test/fixtures/ExportDefaultFunctionDeclaration/expected.js: -------------------------------------------------------------------------------- 1 | /** 2 | * @param {number} param - this is a param. 3 | * @param {string} b - this is a param. 4 | * @param {string[]} [c] - this is a param. 5 | */ 6 | export default function myFunc(param, b, c) { 7 | console.assert(typeof param === "number"); 8 | console.assert(typeof b === "string"); 9 | } -------------------------------------------------------------------------------- /test/fixtures/ExportDefaultFunctionDestructuring/.babelrc: -------------------------------------------------------------------------------- 1 | { 2 | "plugins": [ 3 | [ 4 | "../../../src/", 5 | { 6 | "simple": true 7 | } 8 | ] 9 | ] 10 | } 11 | -------------------------------------------------------------------------------- /test/fixtures/ExportDefaultFunctionDestructuring/actual.js: -------------------------------------------------------------------------------- 1 | /** 2 | * @param {string} key 3 | */ 4 | export default function fn({key}) { 5 | 6 | } -------------------------------------------------------------------------------- /test/fixtures/ExportDefaultFunctionDestructuring/expected.js: -------------------------------------------------------------------------------- 1 | /** 2 | * @param {string} key 3 | */ 4 | export default function fn({ 5 | key 6 | }) { 7 | console.assert(typeof key === "string"); 8 | } -------------------------------------------------------------------------------- /test/fixtures/ExportFunctionDeclaration/.babelrc: -------------------------------------------------------------------------------- 1 | { 2 | "plugins": [ 3 | [ 4 | "../../../src/", 5 | { 6 | "simple": true 7 | } 8 | ] 9 | ] 10 | } 11 | -------------------------------------------------------------------------------- /test/fixtures/ExportFunctionDeclaration/actual.js: -------------------------------------------------------------------------------- 1 | /** 2 | * @param {number} param - this is a param. 3 | * @param {string} b - this is a param. 4 | * @param {string[]} [c] - this is a param. 5 | */ 6 | export function myFunc(param, b, c) { 7 | } -------------------------------------------------------------------------------- /test/fixtures/ExportFunctionDeclaration/expected.js: -------------------------------------------------------------------------------- 1 | /** 2 | * @param {number} param - this is a param. 3 | * @param {string} b - this is a param. 4 | * @param {string[]} [c] - this is a param. 5 | */ 6 | export function myFunc(param, b, c) { 7 | console.assert(typeof param === "number"); 8 | console.assert(typeof b === "string"); 9 | } -------------------------------------------------------------------------------- /test/fixtures/FunctionDeclaration/.babelrc: -------------------------------------------------------------------------------- 1 | { 2 | "plugins": [ 3 | [ 4 | "../../../src/", 5 | { 6 | "simple": true 7 | } 8 | ] 9 | ] 10 | } 11 | -------------------------------------------------------------------------------- /test/fixtures/FunctionDeclaration/actual.js: -------------------------------------------------------------------------------- 1 | /** 2 | * @param {number} param - this is a param. 3 | * @param {string} b - this is a param. 4 | * @param {string[]} [c] - this is a param. 5 | */ 6 | function myFunc(param, b, c) { 7 | } -------------------------------------------------------------------------------- /test/fixtures/FunctionDeclaration/expected.js: -------------------------------------------------------------------------------- 1 | /** 2 | * @param {number} param - this is a param. 3 | * @param {string} b - this is a param. 4 | * @param {string[]} [c] - this is a param. 5 | */ 6 | function myFunc(param, b, c) { 7 | console.assert(typeof param === "number"); 8 | console.assert(typeof b === "string"); 9 | } -------------------------------------------------------------------------------- /test/fixtures/FunctionExpression/.babelrc: -------------------------------------------------------------------------------- 1 | { 2 | "plugins": [ 3 | [ 4 | "../../../src/", 5 | { 6 | "simple": true 7 | } 8 | ] 9 | ] 10 | } 11 | -------------------------------------------------------------------------------- /test/fixtures/FunctionExpression/actual.js: -------------------------------------------------------------------------------- 1 | const obj = { 2 | /** 3 | * @param {String} message Message. 4 | */ 5 | log: function (message) { 6 | console.log(message); 7 | } 8 | }; -------------------------------------------------------------------------------- /test/fixtures/FunctionExpression/expected.js: -------------------------------------------------------------------------------- 1 | const obj = { 2 | /** 3 | * @param {String} message Message. 4 | */ 5 | log: function (message) { 6 | console.assert(typeof message === "string"); 7 | console.log(message); 8 | } 9 | }; -------------------------------------------------------------------------------- /test/fixtures/NOT_SUPPORT_Type_Object/.babelrc: -------------------------------------------------------------------------------- 1 | { 2 | "plugins": [ 3 | [ 4 | "../../../src/", 5 | { 6 | "simple": true 7 | } 8 | ] 9 | ] 10 | } 11 | -------------------------------------------------------------------------------- /test/fixtures/NOT_SUPPORT_Type_Object/actual.js: -------------------------------------------------------------------------------- 1 | const obj = { 2 | /** 3 | * @type {string} 4 | */ 5 | value: "s" 6 | }; 7 | -------------------------------------------------------------------------------- /test/fixtures/NOT_SUPPORT_Type_Object/expected.js: -------------------------------------------------------------------------------- 1 | const obj = { 2 | /** 3 | * @type {string} 4 | */ 5 | value: "s" 6 | }; -------------------------------------------------------------------------------- /test/fixtures/NoTypeOption/.babelrc: -------------------------------------------------------------------------------- 1 | { 2 | "plugins": [ 3 | [ 4 | "../../../src/", 5 | { 6 | "simple": true, 7 | "checkAtParam": false, 8 | "checkAtType": false 9 | } 10 | ] 11 | ] 12 | } 13 | -------------------------------------------------------------------------------- /test/fixtures/NoTypeOption/actual.js: -------------------------------------------------------------------------------- 1 | /** 2 | * @type {MyObject} 3 | */ 4 | const value = {}; -------------------------------------------------------------------------------- /test/fixtures/NoTypeOption/expected.js: -------------------------------------------------------------------------------- 1 | /** 2 | * @type {MyObject} 3 | */ 4 | const value = {}; -------------------------------------------------------------------------------- /test/fixtures/ObjectMethod/.babelrc: -------------------------------------------------------------------------------- 1 | { 2 | "plugins": [ 3 | [ 4 | "../../../src/", 5 | { 6 | "simple": true 7 | } 8 | ] 9 | ] 10 | } 11 | -------------------------------------------------------------------------------- /test/fixtures/ObjectMethod/actual.js: -------------------------------------------------------------------------------- 1 | var object = { 2 | /** 3 | * @param {number} x - this is a param. 4 | * @param {string} y - this is a param. 5 | */ 6 | method(x, y){ 7 | } 8 | }; 9 | -------------------------------------------------------------------------------- /test/fixtures/ObjectMethod/expected.js: -------------------------------------------------------------------------------- 1 | var object = { 2 | /** 3 | * @param {number} x - this is a param. 4 | * @param {string} y - this is a param. 5 | */ 6 | method(x, y) { 7 | console.assert(typeof x === "number"); 8 | console.assert(typeof y === "string"); 9 | } 10 | 11 | }; -------------------------------------------------------------------------------- /test/fixtures/ObjectMethodB/.babelrc: -------------------------------------------------------------------------------- 1 | { 2 | "plugins": [ 3 | [ 4 | "../../../src/", 5 | { 6 | "simple": true 7 | } 8 | ] 9 | ] 10 | } 11 | -------------------------------------------------------------------------------- /test/fixtures/ObjectMethodB/actual.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Encapsulates all CLI behavior for eslint. Makes it easier to test as well as 3 | * for other Node.js programs to effectively run the CLI. 4 | * This is Errrrrrrrrr 5 | */ 6 | const cli = { 7 | /** 8 | * execute with cli options 9 | * @param {object} cliOptions 10 | * @param {string[]} files files are file path list 11 | * @param {string} [text] 12 | * @param {string} [stdinFilename] 13 | * @returns {Promise} exit status 14 | */ 15 | executeWithOptions(cliOptions, files, text, stdinFilename){ 16 | 17 | } 18 | }; 19 | -------------------------------------------------------------------------------- /test/fixtures/ObjectMethodB/expected.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Encapsulates all CLI behavior for eslint. Makes it easier to test as well as 3 | * for other Node.js programs to effectively run the CLI. 4 | * This is Errrrrrrrrr 5 | */ 6 | const cli = { 7 | /** 8 | * execute with cli options 9 | * @param {object} cliOptions 10 | * @param {string[]} files files are file path list 11 | * @param {string} [text] 12 | * @param {string} [stdinFilename] 13 | * @returns {Promise} exit status 14 | */ 15 | executeWithOptions(cliOptions, files, text, stdinFilename) { 16 | console.assert(typeof cliOptions === "object"); 17 | console.assert(Array.isArray(files) && files.every(function (item) { 18 | return typeof item === "string"; 19 | })); 20 | } 21 | 22 | }; -------------------------------------------------------------------------------- /test/fixtures/ObjectMethod_with_es2015/.babelrc: -------------------------------------------------------------------------------- 1 | { 2 | "presets": [ 3 | "@babel/preset-env" 4 | ], 5 | "plugins": [ 6 | [ 7 | "../../../src/", 8 | { 9 | "simple": true 10 | } 11 | ] 12 | ] 13 | } 14 | -------------------------------------------------------------------------------- /test/fixtures/ObjectMethod_with_es2015/actual.js: -------------------------------------------------------------------------------- 1 | var object = { 2 | /** 3 | * @param {number} x - this is a param. 4 | * @param {string} y - this is a param. 5 | */ 6 | method(x, y) { 7 | } 8 | }; 9 | -------------------------------------------------------------------------------- /test/fixtures/ObjectMethod_with_es2015/expected.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | 3 | var object = { 4 | /** 5 | * @param {number} x - this is a param. 6 | * @param {string} y - this is a param. 7 | */ 8 | method: function method(x, y) { 9 | console.assert(typeof x === "number"); 10 | console.assert(typeof y === "string"); 11 | } 12 | }; -------------------------------------------------------------------------------- /test/fixtures/SpecGenerator-param/.babelrc: -------------------------------------------------------------------------------- 1 | { 2 | "plugins": [ 3 | [ 4 | "../../../src/", 5 | { 6 | "useSpecReporter": true, 7 | "checkAtParam": true 8 | } 9 | ] 10 | ] 11 | } 12 | -------------------------------------------------------------------------------- /test/fixtures/SpecGenerator-param/actual.js: -------------------------------------------------------------------------------- 1 | /** 2 | * @param {number} x - this is a param. 3 | * @param {string[]} y - this is a param. 4 | */ 5 | function myFunc(x, y) { 6 | } -------------------------------------------------------------------------------- /test/fixtures/SpecGenerator-param/expected.js: -------------------------------------------------------------------------------- 1 | /** 2 | * @param {number} x - this is a param. 3 | * @param {string[]} y - this is a param. 4 | */ 5 | function myFunc(x, y) { 6 | console.assert(typeof x === "number", 'Expected type: @param {number} x\nActual value:', x, '\nFailure assertion: typeof x === "number"'); 7 | console.assert(Array.isArray(y) && y.every(function (item) { 8 | return typeof item === "string"; 9 | }), 'Expected type: @param {Array.} y\nActual value:', y, '\nFailure assertion: Array.isArray(y) && y.every(function(item){ return (typeof item === "string"); })'); 10 | } -------------------------------------------------------------------------------- /test/fixtures/SpecGenerator-type/.babelrc: -------------------------------------------------------------------------------- 1 | { 2 | "plugins": [ 3 | [ 4 | "../../../src/", 5 | { 6 | "useSpecReporter": true, 7 | "checkAtParam": true, 8 | "checkAtType": true 9 | } 10 | ] 11 | ] 12 | } 13 | -------------------------------------------------------------------------------- /test/fixtures/SpecGenerator-type/actual.js: -------------------------------------------------------------------------------- 1 | /** 2 | * @type {string} 3 | */ 4 | const value = "s"; 5 | /** 6 | * @type {string[]} 7 | */ 8 | const array = ["s"]; -------------------------------------------------------------------------------- /test/fixtures/SpecGenerator-type/expected.js: -------------------------------------------------------------------------------- 1 | /** 2 | * @type {string} 3 | */ 4 | const value = "s"; 5 | /** 6 | * @type {string[]} 7 | */ 8 | 9 | console.assert(typeof value === "string", 'Expected type: @type {string} value\nActual value:', value, '\nFailure assertion: typeof value === "string"'); 10 | const array = ["s"]; 11 | console.assert(Array.isArray(array) && array.every(function (item) { 12 | return typeof item === "string"; 13 | }), 'Expected type: @type {Array.} array\nActual value:', array, '\nFailure assertion: Array.isArray(array) && array.every(function(item){ return (typeof item === "string"); })'); -------------------------------------------------------------------------------- /test/fixtures/TypeCustomObject/.babelrc: -------------------------------------------------------------------------------- 1 | { 2 | "plugins": [ 3 | [ 4 | "../../../src/", 5 | { 6 | "simple": true, 7 | "checkAtType": true 8 | } 9 | ] 10 | ] 11 | } 12 | -------------------------------------------------------------------------------- /test/fixtures/TypeCustomObject/actual.js: -------------------------------------------------------------------------------- 1 | /** 2 | * @type {MyObject} 3 | */ 4 | const value = {}; -------------------------------------------------------------------------------- /test/fixtures/TypeCustomObject/expected.js: -------------------------------------------------------------------------------- 1 | /** 2 | * @type {MyObject} 3 | */ 4 | const value = {}; 5 | console.assert(typeof Symbol === "function" && typeof Symbol.hasInstance === "symbol" && typeof MyObject !== "undefined" && typeof MyObject[Symbol.hasInstance] === "function" ? MyObject[Symbol.hasInstance](value) : typeof MyObject === "undefined" || typeof MyObject !== "function" || value instanceof MyObject); -------------------------------------------------------------------------------- /test/fixtures/TypeExportExpression/.babelrc: -------------------------------------------------------------------------------- 1 | { 2 | "plugins": [ 3 | [ 4 | "../../../src/", 5 | { 6 | "simple": true, 7 | "checkAtType": true 8 | } 9 | ] 10 | ] 11 | } 12 | -------------------------------------------------------------------------------- /test/fixtures/TypeExportExpression/actual.js: -------------------------------------------------------------------------------- 1 | /* 2 | * @type {string} 3 | */ 4 | export const ItemType = 'ItemType'; 5 | -------------------------------------------------------------------------------- /test/fixtures/TypeExportExpression/expected.js: -------------------------------------------------------------------------------- 1 | /* 2 | * @type {string} 3 | */ 4 | export const ItemType = 'ItemType'; -------------------------------------------------------------------------------- /test/fixtures/TypeString/.babelrc: -------------------------------------------------------------------------------- 1 | { 2 | "plugins": [ 3 | [ 4 | "../../../src/", 5 | { 6 | "simple": true, 7 | "checkAtType": true 8 | } 9 | ] 10 | ] 11 | } 12 | -------------------------------------------------------------------------------- /test/fixtures/TypeString/actual.js: -------------------------------------------------------------------------------- 1 | /** 2 | * @type {string} 3 | */ 4 | const value = "s"; -------------------------------------------------------------------------------- /test/fixtures/TypeString/expected.js: -------------------------------------------------------------------------------- 1 | /** 2 | * @type {string} 3 | */ 4 | const value = "s"; 5 | console.assert(typeof value === "string"); -------------------------------------------------------------------------------- /test/fixtures/TypeThisAssignMent/.babelrc: -------------------------------------------------------------------------------- 1 | { 2 | "plugins": [ 3 | [ 4 | "../../../src/", 5 | { 6 | "simple": true, 7 | "checkAtType": true 8 | } 9 | ] 10 | ] 11 | } 12 | -------------------------------------------------------------------------------- /test/fixtures/TypeThisAssignMent/actual.js: -------------------------------------------------------------------------------- 1 | class A { 2 | constructor() { 3 | /** 4 | * @type {string} 5 | */ 6 | this.value = "s"; 7 | } 8 | } -------------------------------------------------------------------------------- /test/fixtures/TypeThisAssignMent/expected.js: -------------------------------------------------------------------------------- 1 | class A { 2 | constructor() { 3 | /** 4 | * @type {string} 5 | */ 6 | this.value = "s"; 7 | console.assert(typeof this.value === "string"); 8 | } 9 | 10 | } -------------------------------------------------------------------------------- /test/fixtures/TypeVariableAssignMent/.babelrc: -------------------------------------------------------------------------------- 1 | { 2 | "plugins": [ 3 | [ 4 | "../../../src/", 5 | { 6 | "simple": true, 7 | "checkAtType": true 8 | } 9 | ] 10 | ] 11 | } 12 | -------------------------------------------------------------------------------- /test/fixtures/TypeVariableAssignMent/actual.js: -------------------------------------------------------------------------------- 1 | var value; 2 | /** 3 | * @type {string} 4 | */ 5 | value = "s"; 6 | -------------------------------------------------------------------------------- /test/fixtures/TypeVariableAssignMent/expected.js: -------------------------------------------------------------------------------- 1 | var value; 2 | /** 3 | * @type {string} 4 | */ 5 | 6 | value = "s"; 7 | console.assert(typeof value === "string"); -------------------------------------------------------------------------------- /test/fixtures/VariableDeclaration/.babelrc: -------------------------------------------------------------------------------- 1 | { 2 | "plugins": [ 3 | [ 4 | "../../../src/", 5 | { 6 | "simple": true 7 | } 8 | ] 9 | ] 10 | } 11 | -------------------------------------------------------------------------------- /test/fixtures/VariableDeclaration/actual.js: -------------------------------------------------------------------------------- 1 | /** 2 | * @param {number} param - this is a param. 3 | * @param {string} b - this is a param. 4 | * @param {string[]} [c] - this is a param. 5 | */ 6 | const myFunc = function a(param, b, c) { 7 | }; -------------------------------------------------------------------------------- /test/fixtures/VariableDeclaration/expected.js: -------------------------------------------------------------------------------- 1 | /** 2 | * @param {number} param - this is a param. 3 | * @param {string} b - this is a param. 4 | * @param {string[]} [c] - this is a param. 5 | */ 6 | const myFunc = function a(param, b, c) { 7 | console.assert(typeof param === "number"); 8 | console.assert(typeof b === "string"); 9 | }; -------------------------------------------------------------------------------- /test/fixtures/multiple-comments/.babelrc: -------------------------------------------------------------------------------- 1 | { 2 | "plugins": [ 3 | [ 4 | "../../../src/", 5 | { 6 | "simple": true 7 | } 8 | ] 9 | ] 10 | } 11 | -------------------------------------------------------------------------------- /test/fixtures/multiple-comments/actual.js: -------------------------------------------------------------------------------- 1 | /** 2 | * @typedef {Object} O 3 | * @property {number} x - this is a param. 4 | */ 5 | /** 6 | * @param {number} param - this is a param. 7 | * @param {string} b - this is a param. 8 | * @param {string[]} [c] - this is a param. 9 | */ 10 | function myFunc(param, b, c) { 11 | } -------------------------------------------------------------------------------- /test/fixtures/multiple-comments/expected.js: -------------------------------------------------------------------------------- 1 | /** 2 | * @typedef {Object} O 3 | * @property {number} x - this is a param. 4 | */ 5 | 6 | /** 7 | * @param {number} param - this is a param. 8 | * @param {string} b - this is a param. 9 | * @param {string[]} [c] - this is a param. 10 | */ 11 | function myFunc(param, b, c) { 12 | console.assert(typeof param === "number"); 13 | console.assert(typeof b === "string"); 14 | } -------------------------------------------------------------------------------- /test/mocha.opts: -------------------------------------------------------------------------------- 1 | --require @babel/register 2 | -------------------------------------------------------------------------------- /yarn.lock: -------------------------------------------------------------------------------- 1 | # THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. 2 | # yarn lockfile v1 3 | 4 | 5 | "@babel/cli@^7.0.0": 6 | version "7.0.0" 7 | resolved "https://registry.npmjs.org/@babel/cli/-/cli-7.0.0.tgz#108b395fd43fff6681d36fb41274df4d8ffeb12e" 8 | dependencies: 9 | commander "^2.8.1" 10 | convert-source-map "^1.1.0" 11 | fs-readdir-recursive "^1.1.0" 12 | glob "^7.0.0" 13 | lodash "^4.17.10" 14 | mkdirp "^0.5.1" 15 | output-file-sync "^2.0.0" 16 | slash "^2.0.0" 17 | source-map "^0.5.0" 18 | optionalDependencies: 19 | chokidar "^2.0.3" 20 | 21 | "@babel/code-frame@^7.0.0": 22 | version "7.0.0" 23 | resolved "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.0.0.tgz#06e2ab19bdb535385559aabb5ba59729482800f8" 24 | dependencies: 25 | "@babel/highlight" "^7.0.0" 26 | 27 | "@babel/core@^7.0.0": 28 | version "7.0.1" 29 | resolved "https://registry.npmjs.org/@babel/core/-/core-7.0.1.tgz#406658caed0e9686fa4feb5c2f3cefb6161c0f41" 30 | dependencies: 31 | "@babel/code-frame" "^7.0.0" 32 | "@babel/generator" "^7.0.0" 33 | "@babel/helpers" "^7.0.0" 34 | "@babel/parser" "^7.0.0" 35 | "@babel/template" "^7.0.0" 36 | "@babel/traverse" "^7.0.0" 37 | "@babel/types" "^7.0.0" 38 | convert-source-map "^1.1.0" 39 | debug "^3.1.0" 40 | json5 "^0.5.0" 41 | lodash "^4.17.10" 42 | resolve "^1.3.2" 43 | semver "^5.4.1" 44 | source-map "^0.5.0" 45 | 46 | "@babel/generator@^7.0.0": 47 | version "7.0.0" 48 | resolved "https://registry.npmjs.org/@babel/generator/-/generator-7.0.0.tgz#1efd58bffa951dc846449e58ce3a1d7f02d393aa" 49 | dependencies: 50 | "@babel/types" "^7.0.0" 51 | jsesc "^2.5.1" 52 | lodash "^4.17.10" 53 | source-map "^0.5.0" 54 | trim-right "^1.0.1" 55 | 56 | "@babel/helper-annotate-as-pure@^7.0.0": 57 | version "7.0.0" 58 | resolved "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.0.0.tgz#323d39dd0b50e10c7c06ca7d7638e6864d8c5c32" 59 | dependencies: 60 | "@babel/types" "^7.0.0" 61 | 62 | "@babel/helper-builder-binary-assignment-operator-visitor@^7.0.0": 63 | version "7.0.0" 64 | resolved "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.0.0.tgz#ba26336beb2abb547d58b6eba5b84d77975a39eb" 65 | dependencies: 66 | "@babel/helper-explode-assignable-expression" "^7.0.0" 67 | "@babel/types" "^7.0.0" 68 | 69 | "@babel/helper-call-delegate@^7.0.0": 70 | version "7.0.0" 71 | resolved "https://registry.npmjs.org/@babel/helper-call-delegate/-/helper-call-delegate-7.0.0.tgz#e036956bb33d76e59c07a04a1fff144e9f62ab78" 72 | dependencies: 73 | "@babel/helper-hoist-variables" "^7.0.0" 74 | "@babel/traverse" "^7.0.0" 75 | "@babel/types" "^7.0.0" 76 | 77 | "@babel/helper-define-map@^7.0.0": 78 | version "7.0.0" 79 | resolved "https://registry.npmjs.org/@babel/helper-define-map/-/helper-define-map-7.0.0.tgz#a5684dd2adf30f0137cf9b0bde436f8c2db17225" 80 | dependencies: 81 | "@babel/helper-function-name" "^7.0.0" 82 | "@babel/types" "^7.0.0" 83 | lodash "^4.17.10" 84 | 85 | "@babel/helper-explode-assignable-expression@^7.0.0": 86 | version "7.0.0" 87 | resolved "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.0.0.tgz#fdfa4c88603ae3e954d0fc3244d5ca82fb468497" 88 | dependencies: 89 | "@babel/traverse" "^7.0.0" 90 | "@babel/types" "^7.0.0" 91 | 92 | "@babel/helper-function-name@^7.0.0": 93 | version "7.0.0" 94 | resolved "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.0.0.tgz#a68cc8d04420ccc663dd258f9cc41b8261efa2d4" 95 | dependencies: 96 | "@babel/helper-get-function-arity" "^7.0.0" 97 | "@babel/template" "^7.0.0" 98 | "@babel/types" "^7.0.0" 99 | 100 | "@babel/helper-get-function-arity@^7.0.0": 101 | version "7.0.0" 102 | resolved "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.0.0.tgz#83572d4320e2a4657263734113c42868b64e49c3" 103 | dependencies: 104 | "@babel/types" "^7.0.0" 105 | 106 | "@babel/helper-hoist-variables@^7.0.0": 107 | version "7.0.0" 108 | resolved "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.0.0.tgz#46adc4c5e758645ae7a45deb92bab0918c23bb88" 109 | dependencies: 110 | "@babel/types" "^7.0.0" 111 | 112 | "@babel/helper-member-expression-to-functions@^7.0.0": 113 | version "7.0.0" 114 | resolved "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.0.0.tgz#8cd14b0a0df7ff00f009e7d7a436945f47c7a16f" 115 | dependencies: 116 | "@babel/types" "^7.0.0" 117 | 118 | "@babel/helper-module-imports@^7.0.0": 119 | version "7.0.0" 120 | resolved "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.0.0.tgz#96081b7111e486da4d2cd971ad1a4fe216cc2e3d" 121 | dependencies: 122 | "@babel/types" "^7.0.0" 123 | 124 | "@babel/helper-module-transforms@^7.0.0": 125 | version "7.0.0" 126 | resolved "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.0.0.tgz#b01ee7d543e81e8c3fc404b19c9f26acb6e4cf4c" 127 | dependencies: 128 | "@babel/helper-module-imports" "^7.0.0" 129 | "@babel/helper-simple-access" "^7.0.0" 130 | "@babel/helper-split-export-declaration" "^7.0.0" 131 | "@babel/template" "^7.0.0" 132 | "@babel/types" "^7.0.0" 133 | lodash "^4.17.10" 134 | 135 | "@babel/helper-optimise-call-expression@^7.0.0": 136 | version "7.0.0" 137 | resolved "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.0.0.tgz#a2920c5702b073c15de51106200aa8cad20497d5" 138 | dependencies: 139 | "@babel/types" "^7.0.0" 140 | 141 | "@babel/helper-plugin-utils@^7.0.0": 142 | version "7.0.0" 143 | resolved "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.0.0.tgz#bbb3fbee98661c569034237cc03967ba99b4f250" 144 | 145 | "@babel/helper-regex@^7.0.0": 146 | version "7.0.0" 147 | resolved "https://registry.npmjs.org/@babel/helper-regex/-/helper-regex-7.0.0.tgz#2c1718923b57f9bbe64705ffe5640ac64d9bdb27" 148 | dependencies: 149 | lodash "^4.17.10" 150 | 151 | "@babel/helper-remap-async-to-generator@^7.0.0": 152 | version "7.0.0" 153 | resolved "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.0.0.tgz#6512273c2feb91587822335cf913fdf680c26901" 154 | dependencies: 155 | "@babel/helper-annotate-as-pure" "^7.0.0" 156 | "@babel/helper-wrap-function" "^7.0.0" 157 | "@babel/template" "^7.0.0" 158 | "@babel/traverse" "^7.0.0" 159 | "@babel/types" "^7.0.0" 160 | 161 | "@babel/helper-replace-supers@^7.0.0": 162 | version "7.0.0" 163 | resolved "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.0.0.tgz#b6f21237280e0be54f591f63a464b66627ced707" 164 | dependencies: 165 | "@babel/helper-member-expression-to-functions" "^7.0.0" 166 | "@babel/helper-optimise-call-expression" "^7.0.0" 167 | "@babel/traverse" "^7.0.0" 168 | "@babel/types" "^7.0.0" 169 | 170 | "@babel/helper-simple-access@^7.0.0": 171 | version "7.0.0" 172 | resolved "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.0.0.tgz#ff36a27983ae4c27122da2f7f294dced80ecbd08" 173 | dependencies: 174 | "@babel/template" "^7.0.0" 175 | "@babel/types" "^7.0.0" 176 | 177 | "@babel/helper-split-export-declaration@^7.0.0": 178 | version "7.0.0" 179 | resolved "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.0.0.tgz#3aae285c0311c2ab095d997b8c9a94cad547d813" 180 | dependencies: 181 | "@babel/types" "^7.0.0" 182 | 183 | "@babel/helper-wrap-function@^7.0.0": 184 | version "7.0.0" 185 | resolved "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.0.0.tgz#1c8e42a2cfb0808e3140189dfe9490782a6fa740" 186 | dependencies: 187 | "@babel/helper-function-name" "^7.0.0" 188 | "@babel/template" "^7.0.0" 189 | "@babel/traverse" "^7.0.0" 190 | "@babel/types" "^7.0.0" 191 | 192 | "@babel/helpers@^7.0.0": 193 | version "7.0.0" 194 | resolved "https://registry.npmjs.org/@babel/helpers/-/helpers-7.0.0.tgz#7213388341eeb07417f44710fd7e1d00acfa6ac0" 195 | dependencies: 196 | "@babel/template" "^7.0.0" 197 | "@babel/traverse" "^7.0.0" 198 | "@babel/types" "^7.0.0" 199 | 200 | "@babel/highlight@^7.0.0": 201 | version "7.0.0" 202 | resolved "https://registry.npmjs.org/@babel/highlight/-/highlight-7.0.0.tgz#f710c38c8d458e6dd9a201afb637fcb781ce99e4" 203 | dependencies: 204 | chalk "^2.0.0" 205 | esutils "^2.0.2" 206 | js-tokens "^4.0.0" 207 | 208 | "@babel/parser@^7.0.0": 209 | version "7.0.0" 210 | resolved "https://registry.npmjs.org/@babel/parser/-/parser-7.0.0.tgz#697655183394facffb063437ddf52c0277698775" 211 | 212 | "@babel/plugin-proposal-async-generator-functions@^7.0.0": 213 | version "7.0.0" 214 | resolved "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.0.0.tgz#5d1eb6b44fd388b97f964350007ab9da090b1d70" 215 | dependencies: 216 | "@babel/helper-plugin-utils" "^7.0.0" 217 | "@babel/helper-remap-async-to-generator" "^7.0.0" 218 | "@babel/plugin-syntax-async-generators" "^7.0.0" 219 | 220 | "@babel/plugin-proposal-json-strings@^7.0.0": 221 | version "7.0.0" 222 | resolved "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.0.0.tgz#3b4d7b5cf51e1f2e70f52351d28d44fc2970d01e" 223 | dependencies: 224 | "@babel/helper-plugin-utils" "^7.0.0" 225 | "@babel/plugin-syntax-json-strings" "^7.0.0" 226 | 227 | "@babel/plugin-proposal-object-rest-spread@^7.0.0": 228 | version "7.0.0" 229 | resolved "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.0.0.tgz#9a17b547f64d0676b6c9cecd4edf74a82ab85e7e" 230 | dependencies: 231 | "@babel/helper-plugin-utils" "^7.0.0" 232 | "@babel/plugin-syntax-object-rest-spread" "^7.0.0" 233 | 234 | "@babel/plugin-proposal-optional-catch-binding@^7.0.0": 235 | version "7.0.0" 236 | resolved "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.0.0.tgz#b610d928fe551ff7117d42c8bb410eec312a6425" 237 | dependencies: 238 | "@babel/helper-plugin-utils" "^7.0.0" 239 | "@babel/plugin-syntax-optional-catch-binding" "^7.0.0" 240 | 241 | "@babel/plugin-proposal-unicode-property-regex@^7.0.0": 242 | version "7.0.0" 243 | resolved "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.0.0.tgz#498b39cd72536cd7c4b26177d030226eba08cd33" 244 | dependencies: 245 | "@babel/helper-plugin-utils" "^7.0.0" 246 | "@babel/helper-regex" "^7.0.0" 247 | regexpu-core "^4.2.0" 248 | 249 | "@babel/plugin-syntax-async-generators@^7.0.0": 250 | version "7.0.0" 251 | resolved "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.0.0.tgz#bf0891dcdbf59558359d0c626fdc9490e20bc13c" 252 | dependencies: 253 | "@babel/helper-plugin-utils" "^7.0.0" 254 | 255 | "@babel/plugin-syntax-json-strings@^7.0.0": 256 | version "7.0.0" 257 | resolved "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.0.0.tgz#0d259a68090e15b383ce3710e01d5b23f3770cbd" 258 | dependencies: 259 | "@babel/helper-plugin-utils" "^7.0.0" 260 | 261 | "@babel/plugin-syntax-object-rest-spread@^7.0.0": 262 | version "7.0.0" 263 | resolved "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.0.0.tgz#37d8fbcaf216bd658ea1aebbeb8b75e88ebc549b" 264 | dependencies: 265 | "@babel/helper-plugin-utils" "^7.0.0" 266 | 267 | "@babel/plugin-syntax-optional-catch-binding@^7.0.0": 268 | version "7.0.0" 269 | resolved "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.0.0.tgz#886f72008b3a8b185977f7cb70713b45e51ee475" 270 | dependencies: 271 | "@babel/helper-plugin-utils" "^7.0.0" 272 | 273 | "@babel/plugin-transform-arrow-functions@^7.0.0": 274 | version "7.0.0" 275 | resolved "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.0.0.tgz#a6c14875848c68a3b4b3163a486535ef25c7e749" 276 | dependencies: 277 | "@babel/helper-plugin-utils" "^7.0.0" 278 | 279 | "@babel/plugin-transform-async-to-generator@^7.0.0": 280 | version "7.0.0" 281 | resolved "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.0.0.tgz#feaf18f4bfeaf2236eea4b2d4879da83006cc8f5" 282 | dependencies: 283 | "@babel/helper-module-imports" "^7.0.0" 284 | "@babel/helper-plugin-utils" "^7.0.0" 285 | "@babel/helper-remap-async-to-generator" "^7.0.0" 286 | 287 | "@babel/plugin-transform-block-scoped-functions@^7.0.0": 288 | version "7.0.0" 289 | resolved "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.0.0.tgz#482b3f75103927e37288b3b67b65f848e2aa0d07" 290 | dependencies: 291 | "@babel/helper-plugin-utils" "^7.0.0" 292 | 293 | "@babel/plugin-transform-block-scoping@^7.0.0": 294 | version "7.0.0" 295 | resolved "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.0.0.tgz#1745075edffd7cdaf69fab2fb6f9694424b7e9bc" 296 | dependencies: 297 | "@babel/helper-plugin-utils" "^7.0.0" 298 | lodash "^4.17.10" 299 | 300 | "@babel/plugin-transform-classes@^7.0.0": 301 | version "7.0.0" 302 | resolved "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.0.0.tgz#9e65ca401747dde99e344baea90ab50dccb4c468" 303 | dependencies: 304 | "@babel/helper-annotate-as-pure" "^7.0.0" 305 | "@babel/helper-define-map" "^7.0.0" 306 | "@babel/helper-function-name" "^7.0.0" 307 | "@babel/helper-optimise-call-expression" "^7.0.0" 308 | "@babel/helper-plugin-utils" "^7.0.0" 309 | "@babel/helper-replace-supers" "^7.0.0" 310 | "@babel/helper-split-export-declaration" "^7.0.0" 311 | globals "^11.1.0" 312 | 313 | "@babel/plugin-transform-computed-properties@^7.0.0": 314 | version "7.0.0" 315 | resolved "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.0.0.tgz#2fbb8900cd3e8258f2a2ede909b90e7556185e31" 316 | dependencies: 317 | "@babel/helper-plugin-utils" "^7.0.0" 318 | 319 | "@babel/plugin-transform-destructuring@^7.0.0": 320 | version "7.0.0" 321 | resolved "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.0.0.tgz#68e911e1935dda2f06b6ccbbf184ffb024e9d43a" 322 | dependencies: 323 | "@babel/helper-plugin-utils" "^7.0.0" 324 | 325 | "@babel/plugin-transform-dotall-regex@^7.0.0": 326 | version "7.0.0" 327 | resolved "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.0.0.tgz#73a24da69bc3c370251f43a3d048198546115e58" 328 | dependencies: 329 | "@babel/helper-plugin-utils" "^7.0.0" 330 | "@babel/helper-regex" "^7.0.0" 331 | regexpu-core "^4.1.3" 332 | 333 | "@babel/plugin-transform-duplicate-keys@^7.0.0": 334 | version "7.0.0" 335 | resolved "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.0.0.tgz#a0601e580991e7cace080e4cf919cfd58da74e86" 336 | dependencies: 337 | "@babel/helper-plugin-utils" "^7.0.0" 338 | 339 | "@babel/plugin-transform-exponentiation-operator@^7.0.0": 340 | version "7.0.0" 341 | resolved "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.0.0.tgz#c51b45e090a01876f64d32b5b46c0799c85ea56c" 342 | dependencies: 343 | "@babel/helper-builder-binary-assignment-operator-visitor" "^7.0.0" 344 | "@babel/helper-plugin-utils" "^7.0.0" 345 | 346 | "@babel/plugin-transform-for-of@^7.0.0": 347 | version "7.0.0" 348 | resolved "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.0.0.tgz#f2ba4eadb83bd17dc3c7e9b30f4707365e1c3e39" 349 | dependencies: 350 | "@babel/helper-plugin-utils" "^7.0.0" 351 | 352 | "@babel/plugin-transform-function-name@^7.0.0": 353 | version "7.0.0" 354 | resolved "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.0.0.tgz#eeda18dc22584e13c3581a68f6be4822bb1d1d81" 355 | dependencies: 356 | "@babel/helper-function-name" "^7.0.0" 357 | "@babel/helper-plugin-utils" "^7.0.0" 358 | 359 | "@babel/plugin-transform-literals@^7.0.0": 360 | version "7.0.0" 361 | resolved "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.0.0.tgz#2aec1d29cdd24c407359c930cdd89e914ee8ff86" 362 | dependencies: 363 | "@babel/helper-plugin-utils" "^7.0.0" 364 | 365 | "@babel/plugin-transform-modules-amd@^7.0.0": 366 | version "7.0.0" 367 | resolved "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.0.0.tgz#2430ab73db9960c4ca89966f425b803f5d0d0468" 368 | dependencies: 369 | "@babel/helper-module-transforms" "^7.0.0" 370 | "@babel/helper-plugin-utils" "^7.0.0" 371 | 372 | "@babel/plugin-transform-modules-commonjs@^7.0.0": 373 | version "7.0.0" 374 | resolved "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.0.0.tgz#20b906e5ab130dd8e456b694a94d9575da0fd41f" 375 | dependencies: 376 | "@babel/helper-module-transforms" "^7.0.0" 377 | "@babel/helper-plugin-utils" "^7.0.0" 378 | "@babel/helper-simple-access" "^7.0.0" 379 | 380 | "@babel/plugin-transform-modules-systemjs@^7.0.0": 381 | version "7.0.0" 382 | resolved "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.0.0.tgz#8873d876d4fee23209decc4d1feab8f198cf2df4" 383 | dependencies: 384 | "@babel/helper-hoist-variables" "^7.0.0" 385 | "@babel/helper-plugin-utils" "^7.0.0" 386 | 387 | "@babel/plugin-transform-modules-umd@^7.0.0": 388 | version "7.0.0" 389 | resolved "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.0.0.tgz#e7bb4f2a6cd199668964241951a25013450349be" 390 | dependencies: 391 | "@babel/helper-module-transforms" "^7.0.0" 392 | "@babel/helper-plugin-utils" "^7.0.0" 393 | 394 | "@babel/plugin-transform-new-target@^7.0.0": 395 | version "7.0.0" 396 | resolved "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.0.0.tgz#ae8fbd89517fa7892d20e6564e641e8770c3aa4a" 397 | dependencies: 398 | "@babel/helper-plugin-utils" "^7.0.0" 399 | 400 | "@babel/plugin-transform-object-super@^7.0.0": 401 | version "7.0.0" 402 | resolved "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.0.0.tgz#b8587d511309b3a0e96e9e38169908b3e392041e" 403 | dependencies: 404 | "@babel/helper-plugin-utils" "^7.0.0" 405 | "@babel/helper-replace-supers" "^7.0.0" 406 | 407 | "@babel/plugin-transform-parameters@^7.0.0": 408 | version "7.0.0" 409 | resolved "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.0.0.tgz#da864efa111816a6df161d492f33de10e74b1949" 410 | dependencies: 411 | "@babel/helper-call-delegate" "^7.0.0" 412 | "@babel/helper-get-function-arity" "^7.0.0" 413 | "@babel/helper-plugin-utils" "^7.0.0" 414 | 415 | "@babel/plugin-transform-regenerator@^7.0.0": 416 | version "7.0.0" 417 | resolved "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.0.0.tgz#5b41686b4ed40bef874d7ed6a84bdd849c13e0c1" 418 | dependencies: 419 | regenerator-transform "^0.13.3" 420 | 421 | "@babel/plugin-transform-shorthand-properties@^7.0.0": 422 | version "7.0.0" 423 | resolved "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.0.0.tgz#85f8af592dcc07647541a0350e8c95c7bf419d15" 424 | dependencies: 425 | "@babel/helper-plugin-utils" "^7.0.0" 426 | 427 | "@babel/plugin-transform-spread@^7.0.0": 428 | version "7.0.0" 429 | resolved "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.0.0.tgz#93583ce48dd8c85e53f3a46056c856e4af30b49b" 430 | dependencies: 431 | "@babel/helper-plugin-utils" "^7.0.0" 432 | 433 | "@babel/plugin-transform-sticky-regex@^7.0.0": 434 | version "7.0.0" 435 | resolved "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.0.0.tgz#30a9d64ac2ab46eec087b8530535becd90e73366" 436 | dependencies: 437 | "@babel/helper-plugin-utils" "^7.0.0" 438 | "@babel/helper-regex" "^7.0.0" 439 | 440 | "@babel/plugin-transform-template-literals@^7.0.0": 441 | version "7.0.0" 442 | resolved "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.0.0.tgz#084f1952efe5b153ddae69eb8945f882c7a97c65" 443 | dependencies: 444 | "@babel/helper-annotate-as-pure" "^7.0.0" 445 | "@babel/helper-plugin-utils" "^7.0.0" 446 | 447 | "@babel/plugin-transform-typeof-symbol@^7.0.0": 448 | version "7.0.0" 449 | resolved "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.0.0.tgz#4dcf1e52e943e5267b7313bff347fdbe0f81cec9" 450 | dependencies: 451 | "@babel/helper-plugin-utils" "^7.0.0" 452 | 453 | "@babel/plugin-transform-unicode-regex@^7.0.0": 454 | version "7.0.0" 455 | resolved "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.0.0.tgz#c6780e5b1863a76fe792d90eded9fcd5b51d68fc" 456 | dependencies: 457 | "@babel/helper-plugin-utils" "^7.0.0" 458 | "@babel/helper-regex" "^7.0.0" 459 | regexpu-core "^4.1.3" 460 | 461 | "@babel/preset-env@^7.0.0": 462 | version "7.0.0" 463 | resolved "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.0.0.tgz#f450f200c14e713f98cb14d113bf0c2cfbb89ca9" 464 | dependencies: 465 | "@babel/helper-module-imports" "^7.0.0" 466 | "@babel/helper-plugin-utils" "^7.0.0" 467 | "@babel/plugin-proposal-async-generator-functions" "^7.0.0" 468 | "@babel/plugin-proposal-json-strings" "^7.0.0" 469 | "@babel/plugin-proposal-object-rest-spread" "^7.0.0" 470 | "@babel/plugin-proposal-optional-catch-binding" "^7.0.0" 471 | "@babel/plugin-proposal-unicode-property-regex" "^7.0.0" 472 | "@babel/plugin-syntax-async-generators" "^7.0.0" 473 | "@babel/plugin-syntax-object-rest-spread" "^7.0.0" 474 | "@babel/plugin-syntax-optional-catch-binding" "^7.0.0" 475 | "@babel/plugin-transform-arrow-functions" "^7.0.0" 476 | "@babel/plugin-transform-async-to-generator" "^7.0.0" 477 | "@babel/plugin-transform-block-scoped-functions" "^7.0.0" 478 | "@babel/plugin-transform-block-scoping" "^7.0.0" 479 | "@babel/plugin-transform-classes" "^7.0.0" 480 | "@babel/plugin-transform-computed-properties" "^7.0.0" 481 | "@babel/plugin-transform-destructuring" "^7.0.0" 482 | "@babel/plugin-transform-dotall-regex" "^7.0.0" 483 | "@babel/plugin-transform-duplicate-keys" "^7.0.0" 484 | "@babel/plugin-transform-exponentiation-operator" "^7.0.0" 485 | "@babel/plugin-transform-for-of" "^7.0.0" 486 | "@babel/plugin-transform-function-name" "^7.0.0" 487 | "@babel/plugin-transform-literals" "^7.0.0" 488 | "@babel/plugin-transform-modules-amd" "^7.0.0" 489 | "@babel/plugin-transform-modules-commonjs" "^7.0.0" 490 | "@babel/plugin-transform-modules-systemjs" "^7.0.0" 491 | "@babel/plugin-transform-modules-umd" "^7.0.0" 492 | "@babel/plugin-transform-new-target" "^7.0.0" 493 | "@babel/plugin-transform-object-super" "^7.0.0" 494 | "@babel/plugin-transform-parameters" "^7.0.0" 495 | "@babel/plugin-transform-regenerator" "^7.0.0" 496 | "@babel/plugin-transform-shorthand-properties" "^7.0.0" 497 | "@babel/plugin-transform-spread" "^7.0.0" 498 | "@babel/plugin-transform-sticky-regex" "^7.0.0" 499 | "@babel/plugin-transform-template-literals" "^7.0.0" 500 | "@babel/plugin-transform-typeof-symbol" "^7.0.0" 501 | "@babel/plugin-transform-unicode-regex" "^7.0.0" 502 | browserslist "^4.1.0" 503 | invariant "^2.2.2" 504 | js-levenshtein "^1.1.3" 505 | semver "^5.3.0" 506 | 507 | "@babel/register@^7.0.0": 508 | version "7.0.0" 509 | resolved "https://registry.npmjs.org/@babel/register/-/register-7.0.0.tgz#fa634bae1bfa429f60615b754fc1f1d745edd827" 510 | dependencies: 511 | core-js "^2.5.7" 512 | find-cache-dir "^1.0.0" 513 | home-or-tmp "^3.0.0" 514 | lodash "^4.17.10" 515 | mkdirp "^0.5.1" 516 | pirates "^4.0.0" 517 | source-map-support "^0.5.9" 518 | 519 | "@babel/template@^7.0.0": 520 | version "7.0.0" 521 | resolved "https://registry.npmjs.org/@babel/template/-/template-7.0.0.tgz#c2bc9870405959c89a9c814376a2ecb247838c80" 522 | dependencies: 523 | "@babel/code-frame" "^7.0.0" 524 | "@babel/parser" "^7.0.0" 525 | "@babel/types" "^7.0.0" 526 | 527 | "@babel/traverse@^7.0.0": 528 | version "7.0.0" 529 | resolved "https://registry.npmjs.org/@babel/traverse/-/traverse-7.0.0.tgz#b1fe9b6567fdf3ab542cfad6f3b31f854d799a61" 530 | dependencies: 531 | "@babel/code-frame" "^7.0.0" 532 | "@babel/generator" "^7.0.0" 533 | "@babel/helper-function-name" "^7.0.0" 534 | "@babel/helper-split-export-declaration" "^7.0.0" 535 | "@babel/parser" "^7.0.0" 536 | "@babel/types" "^7.0.0" 537 | debug "^3.1.0" 538 | globals "^11.1.0" 539 | lodash "^4.17.10" 540 | 541 | "@babel/types@^7.0.0": 542 | version "7.0.0" 543 | resolved "https://registry.npmjs.org/@babel/types/-/types-7.0.0.tgz#6e191793d3c854d19c6749989e3bc55f0e962118" 544 | dependencies: 545 | esutils "^2.0.2" 546 | lodash "^4.17.10" 547 | to-fast-properties "^2.0.0" 548 | 549 | abbrev@1: 550 | version "1.1.1" 551 | resolved "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz#f8f2c887ad10bf67f634f005b6987fed3179aac8" 552 | 553 | ansi-regex@^2.0.0: 554 | version "2.1.1" 555 | resolved "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df" 556 | 557 | ansi-regex@^3.0.0: 558 | version "3.0.0" 559 | resolved "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz#ed0317c322064f79466c02966bddb605ab37d998" 560 | 561 | ansi-styles@^3.2.1: 562 | version "3.2.1" 563 | resolved "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" 564 | dependencies: 565 | color-convert "^1.9.0" 566 | 567 | anymatch@^2.0.0: 568 | version "2.0.0" 569 | resolved "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz#bcb24b4f37934d9aa7ac17b4adaf89e7c76ef2eb" 570 | dependencies: 571 | micromatch "^3.1.4" 572 | normalize-path "^2.1.1" 573 | 574 | aproba@^1.0.3: 575 | version "1.2.0" 576 | resolved "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz#6802e6264efd18c790a1b0d517f0f2627bf2c94a" 577 | 578 | are-we-there-yet@~1.1.2: 579 | version "1.1.5" 580 | resolved "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.5.tgz#4b35c2944f062a8bfcda66410760350fe9ddfc21" 581 | dependencies: 582 | delegates "^1.0.0" 583 | readable-stream "^2.0.6" 584 | 585 | arr-diff@^4.0.0: 586 | version "4.0.0" 587 | resolved "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz#d6461074febfec71e7e15235761a329a5dc7c520" 588 | 589 | arr-flatten@^1.1.0: 590 | version "1.1.0" 591 | resolved "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz#36048bbff4e7b47e136644316c99669ea5ae91f1" 592 | 593 | arr-union@^3.1.0: 594 | version "3.1.0" 595 | resolved "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz#e39b09aea9def866a8f206e288af63919bae39c4" 596 | 597 | array-unique@^0.3.2: 598 | version "0.3.2" 599 | resolved "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz#a894b75d4bc4f6cd679ef3244a9fd8f46ae2d428" 600 | 601 | assign-symbols@^1.0.0: 602 | version "1.0.0" 603 | resolved "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz#59667f41fadd4f20ccbc2bb96b8d4f7f78ec0367" 604 | 605 | async-each@^1.0.0: 606 | version "1.0.1" 607 | resolved "https://registry.npmjs.org/async-each/-/async-each-1.0.1.tgz#19d386a1d9edc6e7c1c85d388aedbcc56d33602d" 608 | 609 | atob@^2.1.1: 610 | version "2.1.2" 611 | resolved "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz#6d9517eb9e030d2436666651e86bd9f6f13533c9" 612 | 613 | babel-plugin-add-module-exports@^1.0.0: 614 | version "1.0.0" 615 | resolved "https://registry.npmjs.org/babel-plugin-add-module-exports/-/babel-plugin-add-module-exports-1.0.0.tgz#72b5424d941a336c6a35357f373d8b8366263031" 616 | optionalDependencies: 617 | chokidar "^2.0.4" 618 | 619 | balanced-match@^1.0.0: 620 | version "1.0.0" 621 | resolved "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767" 622 | 623 | base@^0.11.1: 624 | version "0.11.2" 625 | resolved "https://registry.npmjs.org/base/-/base-0.11.2.tgz#7bde5ced145b6d551a90db87f83c558b4eb48a8f" 626 | dependencies: 627 | cache-base "^1.0.1" 628 | class-utils "^0.3.5" 629 | component-emitter "^1.2.1" 630 | define-property "^1.0.0" 631 | isobject "^3.0.1" 632 | mixin-deep "^1.2.0" 633 | pascalcase "^0.1.1" 634 | 635 | binary-extensions@^1.0.0: 636 | version "1.11.0" 637 | resolved "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.11.0.tgz#46aa1751fb6a2f93ee5e689bb1087d4b14c6c205" 638 | 639 | brace-expansion@^1.1.7: 640 | version "1.1.11" 641 | resolved "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" 642 | dependencies: 643 | balanced-match "^1.0.0" 644 | concat-map "0.0.1" 645 | 646 | braces@^2.3.0, braces@^2.3.1: 647 | version "2.3.2" 648 | resolved "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz#5979fd3f14cd531565e5fa2df1abfff1dfaee729" 649 | dependencies: 650 | arr-flatten "^1.1.0" 651 | array-unique "^0.3.2" 652 | extend-shallow "^2.0.1" 653 | fill-range "^4.0.0" 654 | isobject "^3.0.1" 655 | repeat-element "^1.1.2" 656 | snapdragon "^0.8.1" 657 | snapdragon-node "^2.0.1" 658 | split-string "^3.0.2" 659 | to-regex "^3.0.1" 660 | 661 | browser-stdout@1.3.1: 662 | version "1.3.1" 663 | resolved "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.1.tgz#baa559ee14ced73452229bad7326467c61fabd60" 664 | 665 | browserslist@^4.1.0: 666 | version "4.1.1" 667 | resolved "https://registry.npmjs.org/browserslist/-/browserslist-4.1.1.tgz#328eb4ff1215b12df6589e9ab82f8adaa4fc8cd6" 668 | dependencies: 669 | caniuse-lite "^1.0.30000884" 670 | electron-to-chromium "^1.3.62" 671 | node-releases "^1.0.0-alpha.11" 672 | 673 | buffer-from@^1.0.0: 674 | version "1.1.1" 675 | resolved "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz#32713bc028f75c02fdb710d7c7bcec1f2c6070ef" 676 | 677 | cache-base@^1.0.1: 678 | version "1.0.1" 679 | resolved "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz#0a7f46416831c8b662ee36fe4e7c59d76f666ab2" 680 | dependencies: 681 | collection-visit "^1.0.0" 682 | component-emitter "^1.2.1" 683 | get-value "^2.0.6" 684 | has-value "^1.0.0" 685 | isobject "^3.0.1" 686 | set-value "^2.0.0" 687 | to-object-path "^0.3.0" 688 | union-value "^1.0.0" 689 | unset-value "^1.0.0" 690 | 691 | caniuse-lite@^1.0.30000884: 692 | version "1.0.30000885" 693 | resolved "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30000885.tgz#e889e9f8e7e50e769f2a49634c932b8aee622984" 694 | 695 | chalk@^2.0.0: 696 | version "2.4.1" 697 | resolved "https://registry.npmjs.org/chalk/-/chalk-2.4.1.tgz#18c49ab16a037b6eb0152cc83e3471338215b66e" 698 | dependencies: 699 | ansi-styles "^3.2.1" 700 | escape-string-regexp "^1.0.5" 701 | supports-color "^5.3.0" 702 | 703 | chokidar@^2.0.3, chokidar@^2.0.4: 704 | version "2.0.4" 705 | resolved "https://registry.npmjs.org/chokidar/-/chokidar-2.0.4.tgz#356ff4e2b0e8e43e322d18a372460bbcf3accd26" 706 | dependencies: 707 | anymatch "^2.0.0" 708 | async-each "^1.0.0" 709 | braces "^2.3.0" 710 | glob-parent "^3.1.0" 711 | inherits "^2.0.1" 712 | is-binary-path "^1.0.0" 713 | is-glob "^4.0.0" 714 | lodash.debounce "^4.0.8" 715 | normalize-path "^2.1.1" 716 | path-is-absolute "^1.0.0" 717 | readdirp "^2.0.0" 718 | upath "^1.0.5" 719 | optionalDependencies: 720 | fsevents "^1.2.2" 721 | 722 | chownr@^1.0.1: 723 | version "1.1.1" 724 | resolved "https://registry.npmjs.org/chownr/-/chownr-1.1.1.tgz#54726b8b8fff4df053c42187e801fb4412df1494" 725 | 726 | class-utils@^0.3.5: 727 | version "0.3.6" 728 | resolved "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz#f93369ae8b9a7ce02fd41faad0ca83033190c463" 729 | dependencies: 730 | arr-union "^3.1.0" 731 | define-property "^0.2.5" 732 | isobject "^3.0.0" 733 | static-extend "^0.1.1" 734 | 735 | code-point-at@^1.0.0: 736 | version "1.1.0" 737 | resolved "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz#0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77" 738 | 739 | collection-visit@^1.0.0: 740 | version "1.0.0" 741 | resolved "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz#4bc0373c164bc3291b4d368c829cf1a80a59dca0" 742 | dependencies: 743 | map-visit "^1.0.0" 744 | object-visit "^1.0.0" 745 | 746 | color-convert@^1.9.0: 747 | version "1.9.3" 748 | resolved "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" 749 | dependencies: 750 | color-name "1.1.3" 751 | 752 | color-name@1.1.3: 753 | version "1.1.3" 754 | resolved "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" 755 | 756 | commander@2.15.1: 757 | version "2.15.1" 758 | resolved "http://registry.npmjs.org/commander/-/commander-2.15.1.tgz#df46e867d0fc2aec66a34662b406a9ccafff5b0f" 759 | 760 | commander@^2.8.1: 761 | version "2.18.0" 762 | resolved "https://registry.npmjs.org/commander/-/commander-2.18.0.tgz#2bf063ddee7c7891176981a2cc798e5754bc6970" 763 | 764 | commondir@^1.0.1: 765 | version "1.0.1" 766 | resolved "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz#ddd800da0c66127393cca5950ea968a3aaf1253b" 767 | 768 | component-emitter@^1.2.1: 769 | version "1.2.1" 770 | resolved "https://registry.npmjs.org/component-emitter/-/component-emitter-1.2.1.tgz#137918d6d78283f7df7a6b7c5a63e140e69425e6" 771 | 772 | concat-map@0.0.1: 773 | version "0.0.1" 774 | resolved "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" 775 | 776 | console-control-strings@^1.0.0, console-control-strings@~1.1.0: 777 | version "1.1.0" 778 | resolved "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz#3d7cf4464db6446ea644bf4b39507f9851008e8e" 779 | 780 | convert-source-map@^1.1.0: 781 | version "1.6.0" 782 | resolved "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.6.0.tgz#51b537a8c43e0f04dec1993bffcdd504e758ac20" 783 | dependencies: 784 | safe-buffer "~5.1.1" 785 | 786 | copy-descriptor@^0.1.0: 787 | version "0.1.1" 788 | resolved "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz#676f6eb3c39997c2ee1ac3a924fd6124748f578d" 789 | 790 | core-js@^2.5.7: 791 | version "2.5.7" 792 | resolved "https://registry.npmjs.org/core-js/-/core-js-2.5.7.tgz#f972608ff0cead68b841a16a932d0b183791814e" 793 | 794 | core-util-is@~1.0.0: 795 | version "1.0.2" 796 | resolved "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" 797 | 798 | debug@3.1.0: 799 | version "3.1.0" 800 | resolved "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz#5bb5a0672628b64149566ba16819e61518c67261" 801 | dependencies: 802 | ms "2.0.0" 803 | 804 | debug@^2.1.2, debug@^2.2.0, debug@^2.3.3: 805 | version "2.6.9" 806 | resolved "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" 807 | dependencies: 808 | ms "2.0.0" 809 | 810 | debug@^3.1.0: 811 | version "3.2.5" 812 | resolved "https://registry.npmjs.org/debug/-/debug-3.2.5.tgz#c2418fbfd7a29f4d4f70ff4cea604d4b64c46407" 813 | dependencies: 814 | ms "^2.1.1" 815 | 816 | decode-uri-component@^0.2.0: 817 | version "0.2.0" 818 | resolved "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz#eb3913333458775cb84cd1a1fae062106bb87545" 819 | 820 | deep-extend@^0.6.0: 821 | version "0.6.0" 822 | resolved "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz#c4fa7c95404a17a9c3e8ca7e1537312b736330ac" 823 | 824 | define-property@^0.2.5: 825 | version "0.2.5" 826 | resolved "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz#c35b1ef918ec3c990f9a5bc57be04aacec5c8116" 827 | dependencies: 828 | is-descriptor "^0.1.0" 829 | 830 | define-property@^1.0.0: 831 | version "1.0.0" 832 | resolved "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz#769ebaaf3f4a63aad3af9e8d304c9bbe79bfb0e6" 833 | dependencies: 834 | is-descriptor "^1.0.0" 835 | 836 | define-property@^2.0.2: 837 | version "2.0.2" 838 | resolved "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz#d459689e8d654ba77e02a817f8710d702cb16e9d" 839 | dependencies: 840 | is-descriptor "^1.0.2" 841 | isobject "^3.0.1" 842 | 843 | delegates@^1.0.0: 844 | version "1.0.0" 845 | resolved "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz#84c6e159b81904fdca59a0ef44cd870d31250f9a" 846 | 847 | detect-libc@^1.0.2: 848 | version "1.0.3" 849 | resolved "https://registry.npmjs.org/detect-libc/-/detect-libc-1.0.3.tgz#fa137c4bd698edf55cd5cd02ac559f91a4c4ba9b" 850 | 851 | diff@3.5.0: 852 | version "3.5.0" 853 | resolved "https://registry.npmjs.org/diff/-/diff-3.5.0.tgz#800c0dd1e0a8bfbc95835c202ad220fe317e5a12" 854 | 855 | doctrine@^2.0.0: 856 | version "2.1.0" 857 | resolved "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz#5cd01fc101621b42c4cd7f5d1a66243716d3f39d" 858 | dependencies: 859 | esutils "^2.0.2" 860 | 861 | electron-to-chromium@^1.3.62: 862 | version "1.3.67" 863 | resolved "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.67.tgz#5e8f3ffac89b4b0402c7e1a565be06f3a109abbc" 864 | 865 | escape-string-regexp@1.0.5, escape-string-regexp@^1.0.5: 866 | version "1.0.5" 867 | resolved "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" 868 | 869 | esutils@^2.0.2: 870 | version "2.0.2" 871 | resolved "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz#0abf4f1caa5bcb1f7a9d8acc6dea4faaa04bac9b" 872 | 873 | expand-brackets@^2.1.4: 874 | version "2.1.4" 875 | resolved "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz#b77735e315ce30f6b6eff0f83b04151a22449622" 876 | dependencies: 877 | debug "^2.3.3" 878 | define-property "^0.2.5" 879 | extend-shallow "^2.0.1" 880 | posix-character-classes "^0.1.0" 881 | regex-not "^1.0.0" 882 | snapdragon "^0.8.1" 883 | to-regex "^3.0.1" 884 | 885 | extend-shallow@^2.0.1: 886 | version "2.0.1" 887 | resolved "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz#51af7d614ad9a9f610ea1bafbb989d6b1c56890f" 888 | dependencies: 889 | is-extendable "^0.1.0" 890 | 891 | extend-shallow@^3.0.0, extend-shallow@^3.0.2: 892 | version "3.0.2" 893 | resolved "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz#26a71aaf073b39fb2127172746131c2704028db8" 894 | dependencies: 895 | assign-symbols "^1.0.0" 896 | is-extendable "^1.0.1" 897 | 898 | extglob@^2.0.4: 899 | version "2.0.4" 900 | resolved "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz#ad00fe4dc612a9232e8718711dc5cb5ab0285543" 901 | dependencies: 902 | array-unique "^0.3.2" 903 | define-property "^1.0.0" 904 | expand-brackets "^2.1.4" 905 | extend-shallow "^2.0.1" 906 | fragment-cache "^0.2.1" 907 | regex-not "^1.0.0" 908 | snapdragon "^0.8.1" 909 | to-regex "^3.0.1" 910 | 911 | fill-range@^4.0.0: 912 | version "4.0.0" 913 | resolved "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz#d544811d428f98eb06a63dc402d2403c328c38f7" 914 | dependencies: 915 | extend-shallow "^2.0.1" 916 | is-number "^3.0.0" 917 | repeat-string "^1.6.1" 918 | to-regex-range "^2.1.0" 919 | 920 | find-cache-dir@^1.0.0: 921 | version "1.0.0" 922 | resolved "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-1.0.0.tgz#9288e3e9e3cc3748717d39eade17cf71fc30ee6f" 923 | dependencies: 924 | commondir "^1.0.1" 925 | make-dir "^1.0.0" 926 | pkg-dir "^2.0.0" 927 | 928 | find-up@^2.1.0: 929 | version "2.1.0" 930 | resolved "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz#45d1b7e506c717ddd482775a2b77920a3c0c57a7" 931 | dependencies: 932 | locate-path "^2.0.0" 933 | 934 | for-in@^1.0.2: 935 | version "1.0.2" 936 | resolved "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80" 937 | 938 | fragment-cache@^0.2.1: 939 | version "0.2.1" 940 | resolved "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz#4290fad27f13e89be7f33799c6bc5a0abfff0d19" 941 | dependencies: 942 | map-cache "^0.2.2" 943 | 944 | fs-minipass@^1.2.5: 945 | version "1.2.5" 946 | resolved "https://registry.npmjs.org/fs-minipass/-/fs-minipass-1.2.5.tgz#06c277218454ec288df77ada54a03b8702aacb9d" 947 | dependencies: 948 | minipass "^2.2.1" 949 | 950 | fs-readdir-recursive@^1.1.0: 951 | version "1.1.0" 952 | resolved "https://registry.npmjs.org/fs-readdir-recursive/-/fs-readdir-recursive-1.1.0.tgz#e32fc030a2ccee44a6b5371308da54be0b397d27" 953 | 954 | fs.realpath@^1.0.0: 955 | version "1.0.0" 956 | resolved "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" 957 | 958 | fsevents@^1.2.2: 959 | version "1.2.4" 960 | resolved "https://registry.npmjs.org/fsevents/-/fsevents-1.2.4.tgz#f41dcb1af2582af3692da36fc55cbd8e1041c426" 961 | dependencies: 962 | nan "^2.9.2" 963 | node-pre-gyp "^0.10.0" 964 | 965 | gauge@~2.7.3: 966 | version "2.7.4" 967 | resolved "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz#2c03405c7538c39d7eb37b317022e325fb018bf7" 968 | dependencies: 969 | aproba "^1.0.3" 970 | console-control-strings "^1.0.0" 971 | has-unicode "^2.0.0" 972 | object-assign "^4.1.0" 973 | signal-exit "^3.0.0" 974 | string-width "^1.0.1" 975 | strip-ansi "^3.0.1" 976 | wide-align "^1.1.0" 977 | 978 | get-value@^2.0.3, get-value@^2.0.6: 979 | version "2.0.6" 980 | resolved "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz#dc15ca1c672387ca76bd37ac0a395ba2042a2c28" 981 | 982 | glob-parent@^3.1.0: 983 | version "3.1.0" 984 | resolved "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz#9e6af6299d8d3bd2bd40430832bd113df906c5ae" 985 | dependencies: 986 | is-glob "^3.1.0" 987 | path-dirname "^1.0.0" 988 | 989 | glob@7.1.2: 990 | version "7.1.2" 991 | resolved "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz#c19c9df9a028702d678612384a6552404c636d15" 992 | dependencies: 993 | fs.realpath "^1.0.0" 994 | inflight "^1.0.4" 995 | inherits "2" 996 | minimatch "^3.0.4" 997 | once "^1.3.0" 998 | path-is-absolute "^1.0.0" 999 | 1000 | glob@^7.0.0, glob@^7.0.5: 1001 | version "7.1.3" 1002 | resolved "https://registry.npmjs.org/glob/-/glob-7.1.3.tgz#3960832d3f1574108342dafd3a67b332c0969df1" 1003 | dependencies: 1004 | fs.realpath "^1.0.0" 1005 | inflight "^1.0.4" 1006 | inherits "2" 1007 | minimatch "^3.0.4" 1008 | once "^1.3.0" 1009 | path-is-absolute "^1.0.0" 1010 | 1011 | globals@^11.1.0: 1012 | version "11.7.0" 1013 | resolved "https://registry.npmjs.org/globals/-/globals-11.7.0.tgz#a583faa43055b1aca771914bf68258e2fc125673" 1014 | 1015 | graceful-fs@^4.1.11: 1016 | version "4.1.11" 1017 | resolved "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz#0e8bdfe4d1ddb8854d64e04ea7c00e2a026e5658" 1018 | 1019 | growl@1.10.5: 1020 | version "1.10.5" 1021 | resolved "https://registry.npmjs.org/growl/-/growl-1.10.5.tgz#f2735dc2283674fa67478b10181059355c369e5e" 1022 | 1023 | has-flag@^3.0.0: 1024 | version "3.0.0" 1025 | resolved "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" 1026 | 1027 | has-unicode@^2.0.0: 1028 | version "2.0.1" 1029 | resolved "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz#e0e6fe6a28cf51138855e086d1691e771de2a8b9" 1030 | 1031 | has-value@^0.3.1: 1032 | version "0.3.1" 1033 | resolved "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz#7b1f58bada62ca827ec0a2078025654845995e1f" 1034 | dependencies: 1035 | get-value "^2.0.3" 1036 | has-values "^0.1.4" 1037 | isobject "^2.0.0" 1038 | 1039 | has-value@^1.0.0: 1040 | version "1.0.0" 1041 | resolved "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz#18b281da585b1c5c51def24c930ed29a0be6b177" 1042 | dependencies: 1043 | get-value "^2.0.6" 1044 | has-values "^1.0.0" 1045 | isobject "^3.0.0" 1046 | 1047 | has-values@^0.1.4: 1048 | version "0.1.4" 1049 | resolved "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz#6d61de95d91dfca9b9a02089ad384bff8f62b771" 1050 | 1051 | has-values@^1.0.0: 1052 | version "1.0.0" 1053 | resolved "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz#95b0b63fec2146619a6fe57fe75628d5a39efe4f" 1054 | dependencies: 1055 | is-number "^3.0.0" 1056 | kind-of "^4.0.0" 1057 | 1058 | he@1.1.1: 1059 | version "1.1.1" 1060 | resolved "https://registry.npmjs.org/he/-/he-1.1.1.tgz#93410fd21b009735151f8868c2f271f3427e23fd" 1061 | 1062 | home-or-tmp@^3.0.0: 1063 | version "3.0.0" 1064 | resolved "https://registry.npmjs.org/home-or-tmp/-/home-or-tmp-3.0.0.tgz#57a8fe24cf33cdd524860a15821ddc25c86671fb" 1065 | 1066 | iconv-lite@^0.4.4: 1067 | version "0.4.24" 1068 | resolved "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" 1069 | dependencies: 1070 | safer-buffer ">= 2.1.2 < 3" 1071 | 1072 | ignore-walk@^3.0.1: 1073 | version "3.0.1" 1074 | resolved "https://registry.npmjs.org/ignore-walk/-/ignore-walk-3.0.1.tgz#a83e62e7d272ac0e3b551aaa82831a19b69f82f8" 1075 | dependencies: 1076 | minimatch "^3.0.4" 1077 | 1078 | inflight@^1.0.4: 1079 | version "1.0.6" 1080 | resolved "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" 1081 | dependencies: 1082 | once "^1.3.0" 1083 | wrappy "1" 1084 | 1085 | inherits@2, inherits@^2.0.1, inherits@~2.0.3: 1086 | version "2.0.3" 1087 | resolved "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" 1088 | 1089 | ini@~1.3.0: 1090 | version "1.3.5" 1091 | resolved "https://registry.npmjs.org/ini/-/ini-1.3.5.tgz#eee25f56db1c9ec6085e0c22778083f596abf927" 1092 | 1093 | invariant@^2.2.2: 1094 | version "2.2.4" 1095 | resolved "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz#610f3c92c9359ce1db616e538008d23ff35158e6" 1096 | dependencies: 1097 | loose-envify "^1.0.0" 1098 | 1099 | is-accessor-descriptor@^0.1.6: 1100 | version "0.1.6" 1101 | resolved "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz#a9e12cb3ae8d876727eeef3843f8a0897b5c98d6" 1102 | dependencies: 1103 | kind-of "^3.0.2" 1104 | 1105 | is-accessor-descriptor@^1.0.0: 1106 | version "1.0.0" 1107 | resolved "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz#169c2f6d3df1f992618072365c9b0ea1f6878656" 1108 | dependencies: 1109 | kind-of "^6.0.0" 1110 | 1111 | is-binary-path@^1.0.0: 1112 | version "1.0.1" 1113 | resolved "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz#75f16642b480f187a711c814161fd3a4a7655898" 1114 | dependencies: 1115 | binary-extensions "^1.0.0" 1116 | 1117 | is-buffer@^1.1.5: 1118 | version "1.1.6" 1119 | resolved "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be" 1120 | 1121 | is-data-descriptor@^0.1.4: 1122 | version "0.1.4" 1123 | resolved "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz#0b5ee648388e2c860282e793f1856fec3f301b56" 1124 | dependencies: 1125 | kind-of "^3.0.2" 1126 | 1127 | is-data-descriptor@^1.0.0: 1128 | version "1.0.0" 1129 | resolved "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz#d84876321d0e7add03990406abbbbd36ba9268c7" 1130 | dependencies: 1131 | kind-of "^6.0.0" 1132 | 1133 | is-descriptor@^0.1.0: 1134 | version "0.1.6" 1135 | resolved "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz#366d8240dde487ca51823b1ab9f07a10a78251ca" 1136 | dependencies: 1137 | is-accessor-descriptor "^0.1.6" 1138 | is-data-descriptor "^0.1.4" 1139 | kind-of "^5.0.0" 1140 | 1141 | is-descriptor@^1.0.0, is-descriptor@^1.0.2: 1142 | version "1.0.2" 1143 | resolved "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz#3b159746a66604b04f8c81524ba365c5f14d86ec" 1144 | dependencies: 1145 | is-accessor-descriptor "^1.0.0" 1146 | is-data-descriptor "^1.0.0" 1147 | kind-of "^6.0.2" 1148 | 1149 | is-extendable@^0.1.0, is-extendable@^0.1.1: 1150 | version "0.1.1" 1151 | resolved "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz#62b110e289a471418e3ec36a617d472e301dfc89" 1152 | 1153 | is-extendable@^1.0.1: 1154 | version "1.0.1" 1155 | resolved "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz#a7470f9e426733d81bd81e1155264e3a3507cab4" 1156 | dependencies: 1157 | is-plain-object "^2.0.4" 1158 | 1159 | is-extglob@^2.1.0, is-extglob@^2.1.1: 1160 | version "2.1.1" 1161 | resolved "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" 1162 | 1163 | is-fullwidth-code-point@^1.0.0: 1164 | version "1.0.0" 1165 | resolved "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz#ef9e31386f031a7f0d643af82fde50c457ef00cb" 1166 | dependencies: 1167 | number-is-nan "^1.0.0" 1168 | 1169 | is-fullwidth-code-point@^2.0.0: 1170 | version "2.0.0" 1171 | resolved "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f" 1172 | 1173 | is-glob@^3.1.0: 1174 | version "3.1.0" 1175 | resolved "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz#7ba5ae24217804ac70707b96922567486cc3e84a" 1176 | dependencies: 1177 | is-extglob "^2.1.0" 1178 | 1179 | is-glob@^4.0.0: 1180 | version "4.0.0" 1181 | resolved "https://registry.npmjs.org/is-glob/-/is-glob-4.0.0.tgz#9521c76845cc2610a85203ddf080a958c2ffabc0" 1182 | dependencies: 1183 | is-extglob "^2.1.1" 1184 | 1185 | is-number@^3.0.0: 1186 | version "3.0.0" 1187 | resolved "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz#24fd6201a4782cf50561c810276afc7d12d71195" 1188 | dependencies: 1189 | kind-of "^3.0.2" 1190 | 1191 | is-plain-obj@^1.1.0: 1192 | version "1.1.0" 1193 | resolved "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz#71a50c8429dfca773c92a390a4a03b39fcd51d3e" 1194 | 1195 | is-plain-object@^2.0.1, is-plain-object@^2.0.3, is-plain-object@^2.0.4: 1196 | version "2.0.4" 1197 | resolved "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz#2c163b3fafb1b606d9d17928f05c2a1c38e07677" 1198 | dependencies: 1199 | isobject "^3.0.1" 1200 | 1201 | is-windows@^1.0.2: 1202 | version "1.0.2" 1203 | resolved "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz#d1850eb9791ecd18e6182ce12a30f396634bb19d" 1204 | 1205 | isarray@1.0.0, isarray@~1.0.0: 1206 | version "1.0.0" 1207 | resolved "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" 1208 | 1209 | isobject@^2.0.0: 1210 | version "2.1.0" 1211 | resolved "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz#f065561096a3f1da2ef46272f815c840d87e0c89" 1212 | dependencies: 1213 | isarray "1.0.0" 1214 | 1215 | isobject@^3.0.0, isobject@^3.0.1: 1216 | version "3.0.1" 1217 | resolved "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df" 1218 | 1219 | js-levenshtein@^1.1.3: 1220 | version "1.1.3" 1221 | resolved "https://registry.npmjs.org/js-levenshtein/-/js-levenshtein-1.1.3.tgz#3ef627df48ec8cf24bacf05c0f184ff30ef413c5" 1222 | 1223 | "js-tokens@^3.0.0 || ^4.0.0", js-tokens@^4.0.0: 1224 | version "4.0.0" 1225 | resolved "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" 1226 | 1227 | jsdoc-to-assert@^2.6.1: 1228 | version "2.8.0" 1229 | resolved "https://registry.npmjs.org/jsdoc-to-assert/-/jsdoc-to-assert-2.8.0.tgz#99db2663ee4b1f2d383b99ceb0eaa0bcfc6b1934" 1230 | dependencies: 1231 | doctrine "^2.0.0" 1232 | object-assign "^4.1.0" 1233 | 1234 | jsesc@^2.5.1: 1235 | version "2.5.1" 1236 | resolved "https://registry.npmjs.org/jsesc/-/jsesc-2.5.1.tgz#e421a2a8e20d6b0819df28908f782526b96dd1fe" 1237 | 1238 | jsesc@~0.5.0: 1239 | version "0.5.0" 1240 | resolved "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz#e7dee66e35d6fc16f710fe91d5cf69f70f08911d" 1241 | 1242 | json5@^0.5.0: 1243 | version "0.5.1" 1244 | resolved "https://registry.npmjs.org/json5/-/json5-0.5.1.tgz#1eade7acc012034ad84e2396767ead9fa5495821" 1245 | 1246 | kind-of@^3.0.2, kind-of@^3.0.3, kind-of@^3.2.0: 1247 | version "3.2.2" 1248 | resolved "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz#31ea21a734bab9bbb0f32466d893aea51e4a3c64" 1249 | dependencies: 1250 | is-buffer "^1.1.5" 1251 | 1252 | kind-of@^4.0.0: 1253 | version "4.0.0" 1254 | resolved "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz#20813df3d712928b207378691a45066fae72dd57" 1255 | dependencies: 1256 | is-buffer "^1.1.5" 1257 | 1258 | kind-of@^5.0.0: 1259 | version "5.1.0" 1260 | resolved "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz#729c91e2d857b7a419a1f9aa65685c4c33f5845d" 1261 | 1262 | kind-of@^6.0.0, kind-of@^6.0.2: 1263 | version "6.0.2" 1264 | resolved "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz#01146b36a6218e64e58f3a8d66de5d7fc6f6d051" 1265 | 1266 | locate-path@^2.0.0: 1267 | version "2.0.0" 1268 | resolved "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz#2b568b265eec944c6d9c0de9c3dbbbca0354cd8e" 1269 | dependencies: 1270 | p-locate "^2.0.0" 1271 | path-exists "^3.0.0" 1272 | 1273 | lodash.debounce@^4.0.8: 1274 | version "4.0.8" 1275 | resolved "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz#82d79bff30a67c4005ffd5e2515300ad9ca4d7af" 1276 | 1277 | lodash@^4.17.10: 1278 | version "4.17.11" 1279 | resolved "https://registry.npmjs.org/lodash/-/lodash-4.17.11.tgz#b39ea6229ef607ecd89e2c8df12536891cac9b8d" 1280 | 1281 | loose-envify@^1.0.0: 1282 | version "1.4.0" 1283 | resolved "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz#71ee51fa7be4caec1a63839f7e682d8132d30caf" 1284 | dependencies: 1285 | js-tokens "^3.0.0 || ^4.0.0" 1286 | 1287 | make-dir@^1.0.0: 1288 | version "1.3.0" 1289 | resolved "https://registry.npmjs.org/make-dir/-/make-dir-1.3.0.tgz#79c1033b80515bd6d24ec9933e860ca75ee27f0c" 1290 | dependencies: 1291 | pify "^3.0.0" 1292 | 1293 | map-cache@^0.2.2: 1294 | version "0.2.2" 1295 | resolved "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz#c32abd0bd6525d9b051645bb4f26ac5dc98a0dbf" 1296 | 1297 | map-visit@^1.0.0: 1298 | version "1.0.0" 1299 | resolved "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz#ecdca8f13144e660f1b5bd41f12f3479d98dfb8f" 1300 | dependencies: 1301 | object-visit "^1.0.0" 1302 | 1303 | micromatch@^3.1.10, micromatch@^3.1.4: 1304 | version "3.1.10" 1305 | resolved "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz#70859bc95c9840952f359a068a3fc49f9ecfac23" 1306 | dependencies: 1307 | arr-diff "^4.0.0" 1308 | array-unique "^0.3.2" 1309 | braces "^2.3.1" 1310 | define-property "^2.0.2" 1311 | extend-shallow "^3.0.2" 1312 | extglob "^2.0.4" 1313 | fragment-cache "^0.2.1" 1314 | kind-of "^6.0.2" 1315 | nanomatch "^1.2.9" 1316 | object.pick "^1.3.0" 1317 | regex-not "^1.0.0" 1318 | snapdragon "^0.8.1" 1319 | to-regex "^3.0.2" 1320 | 1321 | minimatch@3.0.4, minimatch@^3.0.4: 1322 | version "3.0.4" 1323 | resolved "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" 1324 | dependencies: 1325 | brace-expansion "^1.1.7" 1326 | 1327 | minimist@0.0.8: 1328 | version "0.0.8" 1329 | resolved "http://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d" 1330 | 1331 | minimist@^1.2.0: 1332 | version "1.2.0" 1333 | resolved "http://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz#a35008b20f41383eec1fb914f4cd5df79a264284" 1334 | 1335 | minipass@^2.2.1, minipass@^2.3.3: 1336 | version "2.3.4" 1337 | resolved "https://registry.npmjs.org/minipass/-/minipass-2.3.4.tgz#4768d7605ed6194d6d576169b9e12ef71e9d9957" 1338 | dependencies: 1339 | safe-buffer "^5.1.2" 1340 | yallist "^3.0.0" 1341 | 1342 | minizlib@^1.1.0: 1343 | version "1.1.0" 1344 | resolved "https://registry.npmjs.org/minizlib/-/minizlib-1.1.0.tgz#11e13658ce46bc3a70a267aac58359d1e0c29ceb" 1345 | dependencies: 1346 | minipass "^2.2.1" 1347 | 1348 | mixin-deep@^1.2.0: 1349 | version "1.3.1" 1350 | resolved "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.1.tgz#a49e7268dce1a0d9698e45326c5626df3543d0fe" 1351 | dependencies: 1352 | for-in "^1.0.2" 1353 | is-extendable "^1.0.1" 1354 | 1355 | mkdirp@0.5.1, mkdirp@^0.5.0, mkdirp@^0.5.1: 1356 | version "0.5.1" 1357 | resolved "http://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903" 1358 | dependencies: 1359 | minimist "0.0.8" 1360 | 1361 | mocha@^5.2.0: 1362 | version "5.2.0" 1363 | resolved "https://registry.npmjs.org/mocha/-/mocha-5.2.0.tgz#6d8ae508f59167f940f2b5b3c4a612ae50c90ae6" 1364 | dependencies: 1365 | browser-stdout "1.3.1" 1366 | commander "2.15.1" 1367 | debug "3.1.0" 1368 | diff "3.5.0" 1369 | escape-string-regexp "1.0.5" 1370 | glob "7.1.2" 1371 | growl "1.10.5" 1372 | he "1.1.1" 1373 | minimatch "3.0.4" 1374 | mkdirp "0.5.1" 1375 | supports-color "5.4.0" 1376 | 1377 | ms@2.0.0: 1378 | version "2.0.0" 1379 | resolved "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" 1380 | 1381 | ms@^2.1.1: 1382 | version "2.1.1" 1383 | resolved "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz#30a5864eb3ebb0a66f2ebe6d727af06a09d86e0a" 1384 | 1385 | nan@^2.9.2: 1386 | version "2.11.0" 1387 | resolved "https://registry.npmjs.org/nan/-/nan-2.11.0.tgz#574e360e4d954ab16966ec102c0c049fd961a099" 1388 | 1389 | nanomatch@^1.2.9: 1390 | version "1.2.13" 1391 | resolved "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz#b87a8aa4fc0de8fe6be88895b38983ff265bd119" 1392 | dependencies: 1393 | arr-diff "^4.0.0" 1394 | array-unique "^0.3.2" 1395 | define-property "^2.0.2" 1396 | extend-shallow "^3.0.2" 1397 | fragment-cache "^0.2.1" 1398 | is-windows "^1.0.2" 1399 | kind-of "^6.0.2" 1400 | object.pick "^1.3.0" 1401 | regex-not "^1.0.0" 1402 | snapdragon "^0.8.1" 1403 | to-regex "^3.0.1" 1404 | 1405 | needle@^2.2.1: 1406 | version "2.2.3" 1407 | resolved "https://registry.npmjs.org/needle/-/needle-2.2.3.tgz#c1b04da378cd634d8befe2de965dc2cfb0fd65ca" 1408 | dependencies: 1409 | debug "^2.1.2" 1410 | iconv-lite "^0.4.4" 1411 | sax "^1.2.4" 1412 | 1413 | node-modules-regexp@^1.0.0: 1414 | version "1.0.0" 1415 | resolved "https://registry.npmjs.org/node-modules-regexp/-/node-modules-regexp-1.0.0.tgz#8d9dbe28964a4ac5712e9131642107c71e90ec40" 1416 | 1417 | node-pre-gyp@^0.10.0: 1418 | version "0.10.3" 1419 | resolved "https://registry.npmjs.org/node-pre-gyp/-/node-pre-gyp-0.10.3.tgz#3070040716afdc778747b61b6887bf78880b80fc" 1420 | dependencies: 1421 | detect-libc "^1.0.2" 1422 | mkdirp "^0.5.1" 1423 | needle "^2.2.1" 1424 | nopt "^4.0.1" 1425 | npm-packlist "^1.1.6" 1426 | npmlog "^4.0.2" 1427 | rc "^1.2.7" 1428 | rimraf "^2.6.1" 1429 | semver "^5.3.0" 1430 | tar "^4" 1431 | 1432 | node-releases@^1.0.0-alpha.11: 1433 | version "1.0.0-alpha.11" 1434 | resolved "https://registry.npmjs.org/node-releases/-/node-releases-1.0.0-alpha.11.tgz#73c810acc2e5b741a17ddfbb39dfca9ab9359d8a" 1435 | dependencies: 1436 | semver "^5.3.0" 1437 | 1438 | nopt@^4.0.1: 1439 | version "4.0.1" 1440 | resolved "https://registry.npmjs.org/nopt/-/nopt-4.0.1.tgz#d0d4685afd5415193c8c7505602d0d17cd64474d" 1441 | dependencies: 1442 | abbrev "1" 1443 | osenv "^0.1.4" 1444 | 1445 | normalize-path@^2.1.1: 1446 | version "2.1.1" 1447 | resolved "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz#1ab28b556e198363a8c1a6f7e6fa20137fe6aed9" 1448 | dependencies: 1449 | remove-trailing-separator "^1.0.1" 1450 | 1451 | npm-bundled@^1.0.1: 1452 | version "1.0.5" 1453 | resolved "https://registry.npmjs.org/npm-bundled/-/npm-bundled-1.0.5.tgz#3c1732b7ba936b3a10325aef616467c0ccbcc979" 1454 | 1455 | npm-packlist@^1.1.6: 1456 | version "1.1.11" 1457 | resolved "https://registry.npmjs.org/npm-packlist/-/npm-packlist-1.1.11.tgz#84e8c683cbe7867d34b1d357d893ce29e28a02de" 1458 | dependencies: 1459 | ignore-walk "^3.0.1" 1460 | npm-bundled "^1.0.1" 1461 | 1462 | npmlog@^4.0.2: 1463 | version "4.1.2" 1464 | resolved "https://registry.npmjs.org/npmlog/-/npmlog-4.1.2.tgz#08a7f2a8bf734604779a9efa4ad5cc717abb954b" 1465 | dependencies: 1466 | are-we-there-yet "~1.1.2" 1467 | console-control-strings "~1.1.0" 1468 | gauge "~2.7.3" 1469 | set-blocking "~2.0.0" 1470 | 1471 | number-is-nan@^1.0.0: 1472 | version "1.0.1" 1473 | resolved "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d" 1474 | 1475 | object-assign@^4.1.0: 1476 | version "4.1.1" 1477 | resolved "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" 1478 | 1479 | object-copy@^0.1.0: 1480 | version "0.1.0" 1481 | resolved "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz#7e7d858b781bd7c991a41ba975ed3812754e998c" 1482 | dependencies: 1483 | copy-descriptor "^0.1.0" 1484 | define-property "^0.2.5" 1485 | kind-of "^3.0.3" 1486 | 1487 | object-visit@^1.0.0: 1488 | version "1.0.1" 1489 | resolved "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz#f79c4493af0c5377b59fe39d395e41042dd045bb" 1490 | dependencies: 1491 | isobject "^3.0.0" 1492 | 1493 | object.pick@^1.3.0: 1494 | version "1.3.0" 1495 | resolved "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz#87a10ac4c1694bd2e1cbf53591a66141fb5dd747" 1496 | dependencies: 1497 | isobject "^3.0.1" 1498 | 1499 | once@^1.3.0: 1500 | version "1.4.0" 1501 | resolved "https://registry.npmjs.org/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" 1502 | dependencies: 1503 | wrappy "1" 1504 | 1505 | os-homedir@^1.0.0: 1506 | version "1.0.2" 1507 | resolved "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz#ffbc4988336e0e833de0c168c7ef152121aa7fb3" 1508 | 1509 | os-tmpdir@^1.0.0: 1510 | version "1.0.2" 1511 | resolved "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" 1512 | 1513 | osenv@^0.1.4: 1514 | version "0.1.5" 1515 | resolved "https://registry.npmjs.org/osenv/-/osenv-0.1.5.tgz#85cdfafaeb28e8677f416e287592b5f3f49ea410" 1516 | dependencies: 1517 | os-homedir "^1.0.0" 1518 | os-tmpdir "^1.0.0" 1519 | 1520 | output-file-sync@^2.0.0: 1521 | version "2.0.1" 1522 | resolved "https://registry.npmjs.org/output-file-sync/-/output-file-sync-2.0.1.tgz#f53118282f5f553c2799541792b723a4c71430c0" 1523 | dependencies: 1524 | graceful-fs "^4.1.11" 1525 | is-plain-obj "^1.1.0" 1526 | mkdirp "^0.5.1" 1527 | 1528 | p-limit@^1.1.0: 1529 | version "1.3.0" 1530 | resolved "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz#b86bd5f0c25690911c7590fcbfc2010d54b3ccb8" 1531 | dependencies: 1532 | p-try "^1.0.0" 1533 | 1534 | p-locate@^2.0.0: 1535 | version "2.0.0" 1536 | resolved "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz#20a0103b222a70c8fd39cc2e580680f3dde5ec43" 1537 | dependencies: 1538 | p-limit "^1.1.0" 1539 | 1540 | p-try@^1.0.0: 1541 | version "1.0.0" 1542 | resolved "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz#cbc79cdbaf8fd4228e13f621f2b1a237c1b207b3" 1543 | 1544 | pascalcase@^0.1.1: 1545 | version "0.1.1" 1546 | resolved "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz#b363e55e8006ca6fe21784d2db22bd15d7917f14" 1547 | 1548 | path-dirname@^1.0.0: 1549 | version "1.0.2" 1550 | resolved "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz#cc33d24d525e099a5388c0336c6e32b9160609e0" 1551 | 1552 | path-exists@^3.0.0: 1553 | version "3.0.0" 1554 | resolved "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515" 1555 | 1556 | path-is-absolute@^1.0.0: 1557 | version "1.0.1" 1558 | resolved "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" 1559 | 1560 | path-parse@^1.0.5: 1561 | version "1.0.6" 1562 | resolved "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz#d62dbb5679405d72c4737ec58600e9ddcf06d24c" 1563 | 1564 | pify@^3.0.0: 1565 | version "3.0.0" 1566 | resolved "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz#e5a4acd2c101fdf3d9a4d07f0dbc4db49dd28176" 1567 | 1568 | pirates@^4.0.0: 1569 | version "4.0.0" 1570 | resolved "https://registry.npmjs.org/pirates/-/pirates-4.0.0.tgz#850b18781b4ac6ec58a43c9ed9ec5fe6796addbd" 1571 | dependencies: 1572 | node-modules-regexp "^1.0.0" 1573 | 1574 | pkg-dir@^2.0.0: 1575 | version "2.0.0" 1576 | resolved "https://registry.npmjs.org/pkg-dir/-/pkg-dir-2.0.0.tgz#f6d5d1109e19d63edf428e0bd57e12777615334b" 1577 | dependencies: 1578 | find-up "^2.1.0" 1579 | 1580 | posix-character-classes@^0.1.0: 1581 | version "0.1.1" 1582 | resolved "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz#01eac0fe3b5af71a2a6c02feabb8c1fef7e00eab" 1583 | 1584 | private@^0.1.6: 1585 | version "0.1.8" 1586 | resolved "https://registry.npmjs.org/private/-/private-0.1.8.tgz#2381edb3689f7a53d653190060fcf822d2f368ff" 1587 | 1588 | process-nextick-args@~2.0.0: 1589 | version "2.0.0" 1590 | resolved "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.0.tgz#a37d732f4271b4ab1ad070d35508e8290788ffaa" 1591 | 1592 | rc@^1.2.7: 1593 | version "1.2.8" 1594 | resolved "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz#cd924bf5200a075b83c188cd6b9e211b7fc0d3ed" 1595 | dependencies: 1596 | deep-extend "^0.6.0" 1597 | ini "~1.3.0" 1598 | minimist "^1.2.0" 1599 | strip-json-comments "~2.0.1" 1600 | 1601 | readable-stream@^2.0.2, readable-stream@^2.0.6: 1602 | version "2.3.6" 1603 | resolved "http://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz#b11c27d88b8ff1fbe070643cf94b0c79ae1b0aaf" 1604 | dependencies: 1605 | core-util-is "~1.0.0" 1606 | inherits "~2.0.3" 1607 | isarray "~1.0.0" 1608 | process-nextick-args "~2.0.0" 1609 | safe-buffer "~5.1.1" 1610 | string_decoder "~1.1.1" 1611 | util-deprecate "~1.0.1" 1612 | 1613 | readdirp@^2.0.0: 1614 | version "2.2.1" 1615 | resolved "https://registry.npmjs.org/readdirp/-/readdirp-2.2.1.tgz#0e87622a3325aa33e892285caf8b4e846529a525" 1616 | dependencies: 1617 | graceful-fs "^4.1.11" 1618 | micromatch "^3.1.10" 1619 | readable-stream "^2.0.2" 1620 | 1621 | regenerate-unicode-properties@^7.0.0: 1622 | version "7.0.0" 1623 | resolved "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-7.0.0.tgz#107405afcc4a190ec5ed450ecaa00ed0cafa7a4c" 1624 | dependencies: 1625 | regenerate "^1.4.0" 1626 | 1627 | regenerate@^1.4.0: 1628 | version "1.4.0" 1629 | resolved "https://registry.npmjs.org/regenerate/-/regenerate-1.4.0.tgz#4a856ec4b56e4077c557589cae85e7a4c8869a11" 1630 | 1631 | regenerator-transform@^0.13.3: 1632 | version "0.13.3" 1633 | resolved "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.13.3.tgz#264bd9ff38a8ce24b06e0636496b2c856b57bcbb" 1634 | dependencies: 1635 | private "^0.1.6" 1636 | 1637 | regex-not@^1.0.0, regex-not@^1.0.2: 1638 | version "1.0.2" 1639 | resolved "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz#1f4ece27e00b0b65e0247a6810e6a85d83a5752c" 1640 | dependencies: 1641 | extend-shallow "^3.0.2" 1642 | safe-regex "^1.1.0" 1643 | 1644 | regexpu-core@^4.1.3, regexpu-core@^4.2.0: 1645 | version "4.2.0" 1646 | resolved "https://registry.npmjs.org/regexpu-core/-/regexpu-core-4.2.0.tgz#a3744fa03806cffe146dea4421a3e73bdcc47b1d" 1647 | dependencies: 1648 | regenerate "^1.4.0" 1649 | regenerate-unicode-properties "^7.0.0" 1650 | regjsgen "^0.4.0" 1651 | regjsparser "^0.3.0" 1652 | unicode-match-property-ecmascript "^1.0.4" 1653 | unicode-match-property-value-ecmascript "^1.0.2" 1654 | 1655 | regjsgen@^0.4.0: 1656 | version "0.4.0" 1657 | resolved "https://registry.npmjs.org/regjsgen/-/regjsgen-0.4.0.tgz#c1eb4c89a209263f8717c782591523913ede2561" 1658 | 1659 | regjsparser@^0.3.0: 1660 | version "0.3.0" 1661 | resolved "https://registry.npmjs.org/regjsparser/-/regjsparser-0.3.0.tgz#3c326da7fcfd69fa0d332575a41c8c0cdf588c96" 1662 | dependencies: 1663 | jsesc "~0.5.0" 1664 | 1665 | remove-trailing-separator@^1.0.1: 1666 | version "1.1.0" 1667 | resolved "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz#c24bce2a283adad5bc3f58e0d48249b92379d8ef" 1668 | 1669 | repeat-element@^1.1.2: 1670 | version "1.1.3" 1671 | resolved "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.3.tgz#782e0d825c0c5a3bb39731f84efee6b742e6b1ce" 1672 | 1673 | repeat-string@^1.6.1: 1674 | version "1.6.1" 1675 | resolved "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637" 1676 | 1677 | resolve-url@^0.2.1: 1678 | version "0.2.1" 1679 | resolved "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz#2c637fe77c893afd2a663fe21aa9080068e2052a" 1680 | 1681 | resolve@^1.3.2: 1682 | version "1.8.1" 1683 | resolved "https://registry.npmjs.org/resolve/-/resolve-1.8.1.tgz#82f1ec19a423ac1fbd080b0bab06ba36e84a7a26" 1684 | dependencies: 1685 | path-parse "^1.0.5" 1686 | 1687 | ret@~0.1.10: 1688 | version "0.1.15" 1689 | resolved "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz#b8a4825d5bdb1fc3f6f53c2bc33f81388681c7bc" 1690 | 1691 | rimraf@^2.6.1: 1692 | version "2.6.2" 1693 | resolved "https://registry.npmjs.org/rimraf/-/rimraf-2.6.2.tgz#2ed8150d24a16ea8651e6d6ef0f47c4158ce7a36" 1694 | dependencies: 1695 | glob "^7.0.5" 1696 | 1697 | safe-buffer@^5.1.2, safe-buffer@~5.1.0, safe-buffer@~5.1.1: 1698 | version "5.1.2" 1699 | resolved "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" 1700 | 1701 | safe-regex@^1.1.0: 1702 | version "1.1.0" 1703 | resolved "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz#40a3669f3b077d1e943d44629e157dd48023bf2e" 1704 | dependencies: 1705 | ret "~0.1.10" 1706 | 1707 | "safer-buffer@>= 2.1.2 < 3": 1708 | version "2.1.2" 1709 | resolved "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" 1710 | 1711 | sax@^1.2.4: 1712 | version "1.2.4" 1713 | resolved "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9" 1714 | 1715 | semver@^5.3.0, semver@^5.4.1: 1716 | version "5.5.1" 1717 | resolved "https://registry.npmjs.org/semver/-/semver-5.5.1.tgz#7dfdd8814bdb7cabc7be0fb1d734cfb66c940477" 1718 | 1719 | set-blocking@~2.0.0: 1720 | version "2.0.0" 1721 | resolved "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" 1722 | 1723 | set-value@^0.4.3: 1724 | version "0.4.3" 1725 | resolved "https://registry.npmjs.org/set-value/-/set-value-0.4.3.tgz#7db08f9d3d22dc7f78e53af3c3bf4666ecdfccf1" 1726 | dependencies: 1727 | extend-shallow "^2.0.1" 1728 | is-extendable "^0.1.1" 1729 | is-plain-object "^2.0.1" 1730 | to-object-path "^0.3.0" 1731 | 1732 | set-value@^2.0.0: 1733 | version "2.0.0" 1734 | resolved "https://registry.npmjs.org/set-value/-/set-value-2.0.0.tgz#71ae4a88f0feefbbf52d1ea604f3fb315ebb6274" 1735 | dependencies: 1736 | extend-shallow "^2.0.1" 1737 | is-extendable "^0.1.1" 1738 | is-plain-object "^2.0.3" 1739 | split-string "^3.0.1" 1740 | 1741 | signal-exit@^3.0.0: 1742 | version "3.0.2" 1743 | resolved "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz#b5fdc08f1287ea1178628e415e25132b73646c6d" 1744 | 1745 | slash@^2.0.0: 1746 | version "2.0.0" 1747 | resolved "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz#de552851a1759df3a8f206535442f5ec4ddeab44" 1748 | 1749 | snapdragon-node@^2.0.1: 1750 | version "2.1.1" 1751 | resolved "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz#6c175f86ff14bdb0724563e8f3c1b021a286853b" 1752 | dependencies: 1753 | define-property "^1.0.0" 1754 | isobject "^3.0.0" 1755 | snapdragon-util "^3.0.1" 1756 | 1757 | snapdragon-util@^3.0.1: 1758 | version "3.0.1" 1759 | resolved "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz#f956479486f2acd79700693f6f7b805e45ab56e2" 1760 | dependencies: 1761 | kind-of "^3.2.0" 1762 | 1763 | snapdragon@^0.8.1: 1764 | version "0.8.2" 1765 | resolved "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz#64922e7c565b0e14204ba1aa7d6964278d25182d" 1766 | dependencies: 1767 | base "^0.11.1" 1768 | debug "^2.2.0" 1769 | define-property "^0.2.5" 1770 | extend-shallow "^2.0.1" 1771 | map-cache "^0.2.2" 1772 | source-map "^0.5.6" 1773 | source-map-resolve "^0.5.0" 1774 | use "^3.1.0" 1775 | 1776 | source-map-resolve@^0.5.0: 1777 | version "0.5.2" 1778 | resolved "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.2.tgz#72e2cc34095543e43b2c62b2c4c10d4a9054f259" 1779 | dependencies: 1780 | atob "^2.1.1" 1781 | decode-uri-component "^0.2.0" 1782 | resolve-url "^0.2.1" 1783 | source-map-url "^0.4.0" 1784 | urix "^0.1.0" 1785 | 1786 | source-map-support@^0.5.9: 1787 | version "0.5.9" 1788 | resolved "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.9.tgz#41bc953b2534267ea2d605bccfa7bfa3111ced5f" 1789 | dependencies: 1790 | buffer-from "^1.0.0" 1791 | source-map "^0.6.0" 1792 | 1793 | source-map-url@^0.4.0: 1794 | version "0.4.0" 1795 | resolved "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.0.tgz#3e935d7ddd73631b97659956d55128e87b5084a3" 1796 | 1797 | source-map@^0.5.0, source-map@^0.5.6: 1798 | version "0.5.7" 1799 | resolved "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" 1800 | 1801 | source-map@^0.6.0: 1802 | version "0.6.1" 1803 | resolved "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" 1804 | 1805 | split-string@^3.0.1, split-string@^3.0.2: 1806 | version "3.1.0" 1807 | resolved "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz#7cb09dda3a86585705c64b39a6466038682e8fe2" 1808 | dependencies: 1809 | extend-shallow "^3.0.0" 1810 | 1811 | static-extend@^0.1.1: 1812 | version "0.1.2" 1813 | resolved "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz#60809c39cbff55337226fd5e0b520f341f1fb5c6" 1814 | dependencies: 1815 | define-property "^0.2.5" 1816 | object-copy "^0.1.0" 1817 | 1818 | string-width@^1.0.1: 1819 | version "1.0.2" 1820 | resolved "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz#118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3" 1821 | dependencies: 1822 | code-point-at "^1.0.0" 1823 | is-fullwidth-code-point "^1.0.0" 1824 | strip-ansi "^3.0.0" 1825 | 1826 | "string-width@^1.0.2 || 2": 1827 | version "2.1.1" 1828 | resolved "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz#ab93f27a8dc13d28cac815c462143a6d9012ae9e" 1829 | dependencies: 1830 | is-fullwidth-code-point "^2.0.0" 1831 | strip-ansi "^4.0.0" 1832 | 1833 | string_decoder@~1.1.1: 1834 | version "1.1.1" 1835 | resolved "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8" 1836 | dependencies: 1837 | safe-buffer "~5.1.0" 1838 | 1839 | strip-ansi@^3.0.0, strip-ansi@^3.0.1: 1840 | version "3.0.1" 1841 | resolved "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf" 1842 | dependencies: 1843 | ansi-regex "^2.0.0" 1844 | 1845 | strip-ansi@^4.0.0: 1846 | version "4.0.0" 1847 | resolved "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz#a8479022eb1ac368a871389b635262c505ee368f" 1848 | dependencies: 1849 | ansi-regex "^3.0.0" 1850 | 1851 | strip-json-comments@~2.0.1: 1852 | version "2.0.1" 1853 | resolved "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a" 1854 | 1855 | supports-color@5.4.0: 1856 | version "5.4.0" 1857 | resolved "https://registry.npmjs.org/supports-color/-/supports-color-5.4.0.tgz#1c6b337402c2137605efe19f10fec390f6faab54" 1858 | dependencies: 1859 | has-flag "^3.0.0" 1860 | 1861 | supports-color@^5.3.0: 1862 | version "5.5.0" 1863 | resolved "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" 1864 | dependencies: 1865 | has-flag "^3.0.0" 1866 | 1867 | tar@^4: 1868 | version "4.4.6" 1869 | resolved "https://registry.npmjs.org/tar/-/tar-4.4.6.tgz#63110f09c00b4e60ac8bcfe1bf3c8660235fbc9b" 1870 | dependencies: 1871 | chownr "^1.0.1" 1872 | fs-minipass "^1.2.5" 1873 | minipass "^2.3.3" 1874 | minizlib "^1.1.0" 1875 | mkdirp "^0.5.0" 1876 | safe-buffer "^5.1.2" 1877 | yallist "^3.0.2" 1878 | 1879 | to-fast-properties@^2.0.0: 1880 | version "2.0.0" 1881 | resolved "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz#dc5e698cbd079265bc73e0377681a4e4e83f616e" 1882 | 1883 | to-object-path@^0.3.0: 1884 | version "0.3.0" 1885 | resolved "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz#297588b7b0e7e0ac08e04e672f85c1f4999e17af" 1886 | dependencies: 1887 | kind-of "^3.0.2" 1888 | 1889 | to-regex-range@^2.1.0: 1890 | version "2.1.1" 1891 | resolved "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz#7c80c17b9dfebe599e27367e0d4dd5590141db38" 1892 | dependencies: 1893 | is-number "^3.0.0" 1894 | repeat-string "^1.6.1" 1895 | 1896 | to-regex@^3.0.1, to-regex@^3.0.2: 1897 | version "3.0.2" 1898 | resolved "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz#13cfdd9b336552f30b51f33a8ae1b42a7a7599ce" 1899 | dependencies: 1900 | define-property "^2.0.2" 1901 | extend-shallow "^3.0.2" 1902 | regex-not "^1.0.2" 1903 | safe-regex "^1.1.0" 1904 | 1905 | trim-right@^1.0.1: 1906 | version "1.0.1" 1907 | resolved "https://registry.npmjs.org/trim-right/-/trim-right-1.0.1.tgz#cb2e1203067e0c8de1f614094b9fe45704ea6003" 1908 | 1909 | unicode-canonical-property-names-ecmascript@^1.0.4: 1910 | version "1.0.4" 1911 | resolved "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-1.0.4.tgz#2619800c4c825800efdd8343af7dd9933cbe2818" 1912 | 1913 | unicode-match-property-ecmascript@^1.0.4: 1914 | version "1.0.4" 1915 | resolved "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-1.0.4.tgz#8ed2a32569961bce9227d09cd3ffbb8fed5f020c" 1916 | dependencies: 1917 | unicode-canonical-property-names-ecmascript "^1.0.4" 1918 | unicode-property-aliases-ecmascript "^1.0.4" 1919 | 1920 | unicode-match-property-value-ecmascript@^1.0.2: 1921 | version "1.0.2" 1922 | resolved "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-1.0.2.tgz#9f1dc76926d6ccf452310564fd834ace059663d4" 1923 | 1924 | unicode-property-aliases-ecmascript@^1.0.4: 1925 | version "1.0.4" 1926 | resolved "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-1.0.4.tgz#5a533f31b4317ea76f17d807fa0d116546111dd0" 1927 | 1928 | union-value@^1.0.0: 1929 | version "1.0.0" 1930 | resolved "https://registry.npmjs.org/union-value/-/union-value-1.0.0.tgz#5c71c34cb5bad5dcebe3ea0cd08207ba5aa1aea4" 1931 | dependencies: 1932 | arr-union "^3.1.0" 1933 | get-value "^2.0.6" 1934 | is-extendable "^0.1.1" 1935 | set-value "^0.4.3" 1936 | 1937 | unset-value@^1.0.0: 1938 | version "1.0.0" 1939 | resolved "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz#8376873f7d2335179ffb1e6fc3a8ed0dfc8ab559" 1940 | dependencies: 1941 | has-value "^0.3.1" 1942 | isobject "^3.0.0" 1943 | 1944 | upath@^1.0.5: 1945 | version "1.1.0" 1946 | resolved "https://registry.npmjs.org/upath/-/upath-1.1.0.tgz#35256597e46a581db4793d0ce47fa9aebfc9fabd" 1947 | 1948 | urix@^0.1.0: 1949 | version "0.1.0" 1950 | resolved "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz#da937f7a62e21fec1fd18d49b35c2935067a6c72" 1951 | 1952 | use@^3.1.0: 1953 | version "3.1.1" 1954 | resolved "https://registry.npmjs.org/use/-/use-3.1.1.tgz#d50c8cac79a19fbc20f2911f56eb973f4e10070f" 1955 | 1956 | util-deprecate@~1.0.1: 1957 | version "1.0.2" 1958 | resolved "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" 1959 | 1960 | wide-align@^1.1.0: 1961 | version "1.1.3" 1962 | resolved "https://registry.npmjs.org/wide-align/-/wide-align-1.1.3.tgz#ae074e6bdc0c14a431e804e624549c633b000457" 1963 | dependencies: 1964 | string-width "^1.0.2 || 2" 1965 | 1966 | wrappy@1: 1967 | version "1.0.2" 1968 | resolved "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" 1969 | 1970 | yallist@^3.0.0, yallist@^3.0.2: 1971 | version "3.0.2" 1972 | resolved "https://registry.npmjs.org/yallist/-/yallist-3.0.2.tgz#8452b4bb7e83c7c188d8041c1a837c773d6d8bb9" 1973 | --------------------------------------------------------------------------------