├── .editorconfig ├── .gitignore ├── .jsbeautifyrc ├── .jshintrc ├── .travis.yml ├── README.md ├── bin └── summary.js ├── doc └── img │ └── test.md.jpg ├── lib ├── bookJson.js ├── convert │ ├── dictionary.js │ ├── index.js │ └── translate.js ├── files.js ├── html2md.js ├── summary │ └── index.js └── utils.js ├── package-lock.json ├── package.json ├── test ├── bookJson.test.js ├── books │ ├── basic │ │ ├── README.md │ │ └── test │ │ │ └── tt.md │ └── config-json │ │ ├── README.md │ │ ├── book.json │ │ ├── first │ │ ├── README.md │ │ └── hello.md │ │ ├── second │ │ └── tt.md │ │ └── world.txt ├── files.test.js ├── html2md │ ├── test.html │ └── test.md ├── index.test.js └── language │ └── test.md └── yarn.lock /.editorconfig: -------------------------------------------------------------------------------- 1 | # editorconfig.org 2 | root = true 3 | 4 | [*] 5 | indent_style = space 6 | indent_size = 2 7 | end_of_line = lf 8 | charset = utf-8 9 | trim_trailing_whitespace = true 10 | insert_final_newline = true 11 | 12 | [*.md] 13 | trim_trailing_whitespace = false 14 | 15 | [Makefile] 16 | indent_style = tab -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # Node rules: 2 | ## Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files) 3 | .grunt 4 | 5 | ## Dependency directory 6 | ## Commenting this out is preferred by some people, see 7 | ## https://docs.npmjs.com/misc/faq#should-i-check-my-node_modules-folder-into-git 8 | node_modules 9 | 10 | # Book build output 11 | _book 12 | _doc 13 | 14 | # eBook build output 15 | *.epub 16 | *.mobi 17 | *.pdf 18 | 19 | *.*~ 20 | -------------------------------------------------------------------------------- /.jsbeautifyrc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/imfly/gitbook-summary/80d665a4b26f0a765e41878a03b26d84416b1cd6/.jsbeautifyrc -------------------------------------------------------------------------------- /.jshintrc: -------------------------------------------------------------------------------- 1 | { 2 | "predef": [ 3 | "document", 4 | "module", 5 | "require", 6 | "__dirname", 7 | "process", 8 | "console", 9 | "it", 10 | "xit", 11 | "describe", 12 | "xdescribe", 13 | "before", 14 | "beforeEach", 15 | "after", 16 | "afterEach", 17 | "angular" 18 | ], 19 | 20 | "node": true, 21 | "esnext": true, 22 | "bitwise": true, 23 | "curly": true, 24 | "eqeqeq": true, 25 | "forin": false, 26 | "immed": true, 27 | "latedef": true, 28 | "newcap": true, 29 | "noarg": true, 30 | "noempty": true, 31 | "nonew": true, 32 | "plusplus": false, 33 | "undef": true, 34 | "strict": false, 35 | "trailing": false, 36 | "globalstrict": true, 37 | "nonstandard": true, 38 | "white": false, 39 | "indent": 4, 40 | "expr": true, 41 | "multistr": true, 42 | "onevar": false, 43 | "unused": "vars", 44 | "sub": true 45 | } 46 | -------------------------------------------------------------------------------- /.travis.yml: -------------------------------------------------------------------------------- 1 | sudo: false 2 | language: node_js 3 | node_js: 4 | - "4.1" 5 | - "4.0" 6 | - "0.12" 7 | script: npm test 8 | after_script: 9 | npm run cov -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Gitbook Summary 2 | 3 | [](https://badge.fury.io/js/gitbook-summary) 4 | [](https://travis-ci.org/imfly/gitbook-summary) 5 | [](https://david-dm.org/imfly/gitbook-summary) 6 | [](https://coveralls.io/r/imfly/gitbook-summary) 7 | 8 | 9 | A command line tool to generate a `SUMMARY.MD` from a folder。[Demo](http://imfly.github.io/how-to-create-self-publishing-platform) [中文文档](http://imfly.github.io/how-to-create-self-publishing-platform/3-%E5%A6%82%E4%BD%95%E6%89%93%E9%80%A0%E8%87%AA%E5%B7%B1%E7%9A%84%E5%B9%B3%E5%8F%B0%EF%BC%9F/2-Summary%E7%9A%84%E4%BD%BF%E7%94%A8.html) 10 | 11 | ## EBooks 12 | 13 | * 《Nodejs区块链开发2》: https://github.com/imfly/blockchain-on-nodejs 14 | * 《Nodejs区块链开发》: https://github.com/imfly/bitcoin-on-nodejs 15 | * 《用Gitbook和Github轻松搭建自出版平台》: https://github.com/imfly/how-to-create-self-publishing-platform 16 | * 《sails.js 官方文档 多语言电子书》:https://github.com/imfly/sailsjs-docs-gitbook 17 | 18 | More Gitbooks : https://www.gitbook.com/@imfly 19 | 20 | ## Features 21 | 22 | - Generate `SUMMARY.md` by using a CLI with some options 23 | - Setting with `book.json` 24 | - Link `README.md` to the parent directory 25 | - Only get '.md' files 26 | - Order by alphabet or numbers 27 | - ... 28 | 29 | ## CoC (Convention over Configuration) 30 | 31 | Source directory: 32 | 33 | ``` 34 | sources 35 | ├── 1-FirstChapter // The first chapter,format: {orderNumber or alphabet}-{chapterName}.md 36 | ├────── 1-FirstDocument.md 37 | ├────── 5-SecondDocument.md // concentrating solely on the order, not the numbers. 38 | ├── 3-SecondChapter // Focus only on the order, not the numbers. 39 | ├────── 1-FirstDocumentOfSecondChapter.md 40 | ├────── 2-SecondDocumentOfSecondChapter.md 41 | ├── 7-ThirdChapter 42 | ├── FourthChapter // May have no order 43 | ├── README.md // In addition to readme.md, not to put other markdown documents 44 | └── book.json // Set up the book 45 | ``` 46 | 47 | ## Install 48 | 49 | ``` 50 | npm install -g gitbook-summary 51 | ``` 52 | 53 | ## Using 54 | 55 | 1> Generate a `SUMMARY.md` Simply 56 | 57 | ``` 58 | $ cd /path/to/your/book/ 59 | $ book sm 60 | ``` 61 | 62 | or, For example: 63 | 64 | ``` 65 | $ book sm -r ../sailsjs-docs-gitbook/en -i 0home -u 'myApp' -c 'concepts, reference, userguides' -n "Sails.js 官方文档(中英合辑)" 66 | ``` 67 | 68 | To see the command line options: 69 | 70 | ``` 71 | $ book sm --help 72 | 73 | Usage: summary|sm [options] 74 | 75 | Generate a `SUMMARY.md` from a folder 76 | 77 | Options: 78 | 79 | -h, --help output usage information 80 | -r, --root [string] root folder, default is `.` 81 | -t, --title [string] book title, default is `Your Book Title`. 82 | -c, --catalog [list] catalog folders included book files, default is `all`. 83 | -i, --ignores [list] ignore folders that be excluded, default is `[]`. 84 | -u, --unchanged [list] unchanged catalog like `request.js`, default is `[]`. 85 | -o, --outputfile [string] output file, defaut is `./SUMMARY.md` 86 | -s, --sortedBy [string] sorted by sortedBy, for example: `num-`, defaut is sorted by characters 87 | -d, --disableTitleFormatting don't convert filename/folder name to start case (for example: `JavaScript` to `Java Script`), default is `false` 88 | 89 | ``` 90 | 91 | **Notes**: 92 | * The article title is taken from `title` property in the articles front-matter. If this property is not available, the articles filename will be used as title for the summary. 93 | * The option `-s` or `--sortedBy` can not be given `-` as argument, because commander.js will parse it an option. But you can set it in `book.json` as follows. 94 | * set up the sortedBy and if there are any summaries missing the order, look at the example below and follow, 95 | for example, you have summaries like this `01-elementry-school, 02-middle-school, 03-university, ...` 96 | you realized high school was missing, then You can make correct order in the following way 97 | eg. `01-elementry-school, 02-middle-school, 02a-high-school, 03-university, ...` 98 | not `01-elementry-school, 02-middle-school, 03-high-school, 04-university, ...` 99 | 100 | 2> Create a `book.json` in the book`s root folder 101 | 102 | for example: 103 | 104 | ``` 105 | // test/books/config-json/book.json 106 | { 107 | "title": "json-config-name", 108 | "outputfile": "test.md", 109 | "catalog": "all", // or [chapter1,chapter2, ...] 110 | "ignores": [], //Default: '.*', '_book'... 111 | "unchanged": [], // for example: ['myApp'] -> `myApp` not `My App` 112 | "sortedBy": "-", 113 | "disableTitleFormatting": true // default: false 114 | } 115 | ``` 116 | 117 | then, you can do: 118 | 119 | ``` 120 | $ book sm 121 | ``` 122 | 123 | You will get a `test.md` file: 124 | 125 |  126 | 127 | 3> Get a markdown artical from a html file or a remote url 128 | 129 | ``` 130 | $ book md -l "http://book.btcnodejs.com/index.html" -s "div.className" 131 | ``` 132 | 133 | You will get the 'index.html' and 'index.md'. 134 | 135 | 4> Get convert between zh and zh-tw, zh-hk, or zh-sg 136 | 137 | ``` 138 | $ book cv -f ./test/language/test.md -l zh-tw -t "./test/language/test2.md" 139 | ``` 140 | 141 | ## Development 142 | 143 | ``` 144 | npm install 145 | npm link 146 | ``` 147 | 148 | ## Test 149 | 150 | ``` 151 | npm test 152 | ``` 153 | 154 | ## Todo 155 | 156 | - Convert articals between Simplified and Traditional Chinese. 157 | - Generate eBooks(html, pdf, etc) by extending `gitbook`; 158 | 159 | ## Contribute 160 | 161 | We love pull requests! You can `fork it` and commit a `pr` 162 | 163 | ## License 164 | 165 | The MIT License 166 | -------------------------------------------------------------------------------- /bin/summary.js: -------------------------------------------------------------------------------- 1 | #! /usr/bin/env node 2 | 3 | var _ = require("lodash"); 4 | var program = require("commander"); 5 | var color = require('bash-color'); 6 | 7 | var pkg = require("../package.json"); 8 | var summary = require("../lib/summary").summary; 9 | var convert = require("../lib/convert"); 10 | var html2md = require("../lib/html2md"); 11 | 12 | function list(val) { 13 | return val.split(','); 14 | } 15 | 16 | program 17 | .version(pkg.version) 18 | 19 | program 20 | .command("summary") 21 | .alias("sm") 22 | .description("Generate a `SUMMARY.md` from a folder") 23 | .option("-r, --root [string]", "root folder, default is `.`") 24 | .option("-t, --title [string]", "book title, default is `Your Book Title`.") 25 | .option("-c, --catalog [list]", "folders to be included in book, default is `all`.") 26 | .option("-i, --ignores [list]", "ignore patterns to be excluded, default is `[]`.", list) 27 | .option("-u, --unchanged [list]", "unchanged catalog like `request.js`, default is `[]`.") 28 | .option("-o, --outputfile [string]", "output file, default is `./SUMMARY.md`") 29 | .option("-s, --sortedBy [string]", "sorted by sortedBy, for example: `num-`, default is sorted by characters") 30 | .option("-d, --disableTitleFormatting", "don't convert filename/folder name to start case (for example: `JavaScript` to `Java Script`), default is `false`") 31 | 32 | .action(function(options) { 33 | // generate `SUMMARY.md` 34 | // Fixme 35 | // if (options.length >= 1) { 36 | // console.log(color.red('\nError! The sub commands "%s" has been deprecated, please read the follow messages:'), cmd); 37 | // program.help(); 38 | // } else { 39 | summary(options); 40 | // } 41 | }); 42 | 43 | program 44 | .command("html2md") 45 | .alias("md") 46 | .description("Get markdown from a remote url or a local html.") 47 | .option("-f, --file [file]", "path to file") 48 | .option("-l, --url [url]", "articles`s url") 49 | .option("-t, --target [target]", "target to be saved") 50 | .option("-s, --selector [selector]", "DOM element selector") 51 | .action(function(options) { 52 | html2md(options); 53 | }); 54 | 55 | // todo 56 | program 57 | .command("convert") 58 | .alias("cv") 59 | .description("Todo: Convert articles between Simplified and Traditional Chinese.") 60 | .option("-f, --file [file]", "path to file") 61 | .option("-l, --language [language]", "articles`s language") 62 | .option("-t, --target [target]", "target to be saved") 63 | .action(function(options) { 64 | convert(options); 65 | }); 66 | 67 | // Parse and fallback to help if no args 68 | if (_.isEmpty(program.parse(process.argv).args) && process.argv.length === 2) { 69 | program.help(); 70 | } 71 | -------------------------------------------------------------------------------- /doc/img/test.md.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/imfly/gitbook-summary/80d665a4b26f0a765e41878a03b26d84416b1cd6/doc/img/test.md.jpg -------------------------------------------------------------------------------- /lib/bookJson.js: -------------------------------------------------------------------------------- 1 | var fs = require('fs-extra'); 2 | var path = require('path'); 3 | 4 | function BookConfig(root) { 5 | 6 | var bookJson = path.resolve(root, 'book.json'); 7 | var book = {}, config = {}; 8 | 9 | if (fs.existsSync(bookJson)) { 10 | config = require(bookJson); 11 | } 12 | 13 | var outputName = config.outputfile || 'SUMMARY.md'; 14 | 15 | // default options 16 | book.outputfile = path.join(root, outputName); 17 | book.catalog = config.catalog || 'all'; 18 | book.ignores = config.ignores || []; 19 | book.unchanged = config.unchanged || []; 20 | book.title = config.title || 'Your Book Title'; 21 | book.sortedBy = config.sortedBy || ''; 22 | book.disableTitleFormatting = config.disableTitleFormatting || false; 23 | 24 | return book; 25 | } 26 | 27 | module.exports = BookConfig; 28 | -------------------------------------------------------------------------------- /lib/convert/index.js: -------------------------------------------------------------------------------- 1 | var color = require('bash-color'); 2 | var fs = require('fs'); 3 | 4 | var spawn = require('child_process').spawn; 5 | 6 | var translate = require('./translate'); 7 | 8 | // Todo: Add more configures like `s2t.json`, and so on. 9 | function Convert(options) { 10 | // console.log(process.argv[1], process.argv[2], process.argv[3]); 11 | var bookRoot = options.bookroot || '.'; 12 | translate(options); 13 | // convert.handleFile(bookRoot, 'zht2zhs.ini'); 14 | // console.log(color.green('Finished.')); 15 | // if (process.argv[3] === "t2s") { 16 | // convert.handleFile(process.argv[2], 'zhs2zht.ini'); 17 | // } 18 | }; 19 | 20 | // Asynchronous process to handle files 21 | function handleFile(rootPath, configure) { 22 | try { 23 | fs.readdir(rootPath, function(err, files) { 24 | if (err) { 25 | console.log('read dir error'); 26 | } else { 27 | files.forEach(function(item) { 28 | var tmpPath = rootPath + '/' + item; 29 | fs.stat(tmpPath, function(err1, state) { 30 | if (err1) { 31 | console.log('stat error'); 32 | } else { 33 | if (state.isDirectory()) { 34 | handleFile(tmpPath, configure); 35 | } else { 36 | // http://nodejs.cn/api/child_process.html#child_process_child_process_execfile_file_args_options_callback 37 | spawn('opencc', ['-i', tmpPath, '-o', tmpPath, '-c', configure], { 38 | // detached: true, 39 | stdio: ['ignore', console.log('Converted successfully.'), console.log('Sorry, some errors happened!')] 40 | }) 41 | .unref(); 42 | } 43 | } 44 | }); 45 | }); 46 | } 47 | }); 48 | } catch (err) { 49 | console.log(err); 50 | } 51 | }; 52 | 53 | module.exports = Convert; 54 | -------------------------------------------------------------------------------- /lib/convert/translate.js: -------------------------------------------------------------------------------- 1 | var fs = require('fs'); 2 | var color = require('bash-color'); 3 | 4 | var dictionary = require('./dictionary'); 5 | 6 | var private = {}; 7 | 8 | function Translate(options) { 9 | console.log(color.green('Convert is starting...')); 10 | fs.readFile(options.file, function(err, html) { 11 | if (err) { 12 | throw err; 13 | } 14 | var tr = private.translateText(html.toString(), options.language); 15 | fs.writeFile(options.target, tr, function(err) { 16 | if (err) { 17 | throw err; 18 | } 19 | console.log(color.green('Converted successfully!')); 20 | }); 21 | }); 22 | } 23 | 24 | // private methods 25 | private = { 26 | translateString: function(text, table) { 27 | for (var i = 0; i < table.from.length; ++i) 28 | text = text.replace(new RegExp(table.from[i], 'g'), table.to[i]); 29 | for (var i = 0; i < table.froms.length; ++i) 30 | text = text.replace(new RegExp(table.froms[i], 'g'), table.tos[i]); 31 | return text; 32 | }, 33 | 34 | translateText: function(text, lang) { 35 | switch (lang) { 36 | case 'zh-hant': 37 | return this.translateString(text, dictionary.Hant); 38 | case 'zh-hk': 39 | return this.translateString(this.translateString(text, dictionary.HK), dictionary.Hant); 40 | case 'zh-tw': 41 | return this.translateString(this.translateString(text, dictionary.TW), dictionary.Hant); 42 | case 'zh-sg': 43 | return this.translateString(this.translateString(text, dictionary.SG), dictionary.Hant); 44 | default: 45 | return text; 46 | } 47 | } 48 | } 49 | 50 | module.exports = Translate; 51 | -------------------------------------------------------------------------------- /lib/files.js: -------------------------------------------------------------------------------- 1 | var _ = require('lodash'); 2 | var fs = require('fs'); 3 | var path = require('path'); 4 | var color = require('bash-color'); 5 | var fm = require('front-matter'); 6 | 7 | // separate for test 8 | var sort = function(current, next, sortedBy) { 9 | if (current.isDirectory && !next.isDirectory) return -1; 10 | if (!current.isDirectory && next.isDirectory) return 1; 11 | // Sorted if given current sorted hyphen, for example: `-` or `_` 12 | if (sortedBy) { 13 | var pattern = "(^\\d*)" + sortedBy; 14 | var reg = new RegExp(pattern); 15 | if(current.name.match(reg) && next.name.match(reg)){ 16 | var currentNum = current.name.match(reg)[1]; 17 | var nextNum = next.name.match(reg)[1]; 18 | return currentNum - nextNum; 19 | } 20 | } 21 | return current.name.localeCompare(next.name); 22 | }; 23 | 24 | // Use a loop to read all files 25 | function ReadFile(filePath, filesJson, sortedBy) { 26 | var files; 27 | 28 | function getFrontMatterTitle(newpath) 29 | { 30 | // default to use filename 31 | var title = path.parse(newpath).name; 32 | var content = fs.readFileSync(newpath,'utf8'); 33 | 34 | if (!fm.test(content)) return title; // skip if no front matter 35 | 36 | var frontMatter = fm(content); 37 | if (typeof frontMatter.attributes.title === "undefined") return title; // skip if no 'title' attributes 38 | // todo: set 'title' via config 39 | 40 | return frontMatter.attributes.title; 41 | } 42 | 43 | function walk(file) { 44 | var newpath = path.posix.join(filePath, file); 45 | var state = fs.statSync(newpath); 46 | 47 | if (state.isDirectory()) { 48 | filesJson[file] = {}; 49 | new ReadFile(newpath, filesJson[file], sortedBy); 50 | // filter empty directories 51 | if (Object.keys(filesJson[file]).length < 1) { 52 | delete filesJson[file]; 53 | } 54 | } else { 55 | // Parse the file. 56 | var obj = path.parse(newpath); 57 | 58 | if (obj.ext === '.md') { 59 | filesJson[getFrontMatterTitle(newpath)] = newpath + ")\n"; 60 | } 61 | } 62 | } 63 | 64 | try { 65 | // Synchronous readdir 66 | files = fs.readdirSync(filePath) 67 | // sort the files: directories first, afterwards files 68 | .map(function(v) { 69 | var stat = fs.statSync(path.resolve(filePath, v)); 70 | return { 71 | name: v, 72 | isDirectory: stat.isDirectory() 73 | }; 74 | }) 75 | .sort(function(current, next) { 76 | return sort(current, next, sortedBy); 77 | }) 78 | .map(function(v) { 79 | return v.name; 80 | }); 81 | 82 | files.forEach(walk); 83 | } catch (error) { 84 | filesJson = null; //fixme 85 | console.log(color.red(error.message)); 86 | } 87 | } 88 | 89 | module.exports = { 90 | readFile: ReadFile, 91 | sort: sort 92 | }; 93 | -------------------------------------------------------------------------------- /lib/html2md.js: -------------------------------------------------------------------------------- 1 | var fs = require('fs'); 2 | var path = require('path'); 3 | var url = require('url'); 4 | var toMarkdown = require('to-markdown'); 5 | var request = require('request'); 6 | var iconv = require('iconv-lite'); 7 | var color = require('bash-color'); 8 | var $ = require('cheerio'); 9 | 10 | var private = {}; 11 | 12 | // Constructor 13 | function Html2md(options) { 14 | if (options.file) { 15 | private.outputFileOptions(options); 16 | private.convertFromFile(options); 17 | } else if (options.url) { 18 | private.outputRemoteOptions(options); 19 | private.convertFromRemote(options); 20 | } else { 21 | console.log(color.red('Sorry, Please provide a file or Url.')); 22 | return; 23 | } 24 | } 25 | 26 | private = { 27 | outputFileOptions: function(options) { 28 | var outputfile = path.parse(options.file); 29 | 30 | options['target'] = path.join(outputfile.dir, outputfile.name + ".md"); 31 | }, 32 | 33 | outputRemoteOptions: function(options) { 34 | var remoteUrl = options.url; 35 | 36 | if (options.target) { 37 | var outputfile = path.parse(options.target); 38 | options['targetHtml'] = path.join(outputfile.dir, outputfile.name + ".html"); 39 | } else { 40 | var outputfileName = url.parse(remoteUrl).pathname.split('/').pop(); 41 | // console.log(outputfileName); 42 | options['target'] = path.join(outputfileName + ".md"); 43 | options['targetHtml'] = path.join(outputfileName + ".html"); 44 | } 45 | }, 46 | 47 | convertFromFile: function(options) { 48 | fs.readFile(options.file, 'UTF-8', function(err, html) { 49 | if (err) { 50 | throw err; 51 | } 52 | private.toMarkdown(options, html); 53 | }); 54 | }, 55 | 56 | convertFromRemote: function(options) { 57 | var url = options.url, 58 | target = options.target; 59 | var html = [], 60 | size = 0, 61 | statusCode; 62 | 63 | request 64 | .get(url) 65 | .on('error', function(err) { 66 | console.log(err); 67 | }) 68 | .on('response', function(response) { 69 | statusCode = response.statusCode; 70 | response.on('data', function(data) { 71 | // compressed data as it is received 72 | console.log('received ' + data.length + ' bytes of compressed data'); 73 | html.push(data); 74 | size += data.length; 75 | }); 76 | }) 77 | .on('end', function() { 78 | if (statusCode === 200) { 79 | // console.log('document saved as: http://mikeal.iriscouch.com/testjs/'+ rand); 80 | console.log(color.green("The html has been received!")); 81 | 82 | var data = Buffer.concat(html, size); 83 | var str = iconv.decode(data, 'utf8'); 84 | 85 | private.toMarkdown(options, str); 86 | } else { 87 | console.log('error: ' + statusCode); 88 | } 89 | }) 90 | .pipe(fs.createWriteStream(options.targetHtml)); 91 | }, 92 | 93 | toMarkdown: function(options, html) { 94 | console.log(color.green("Converting...")); 95 | var htmlSelected, md; 96 | 97 | if (options.selector) { 98 | htmlSelected = $(options.selector, html.toString()).html(); 99 | }else{ 100 | htmlSelected = html; 101 | } 102 | 103 | try { 104 | md = toMarkdown(htmlSelected.toString()); 105 | fs.writeFile(options.target, md, function(err) { 106 | if (err) { 107 | throw err; 108 | } 109 | console.log(color.green('Converted successfully!')); 110 | }); 111 | } catch (e) { 112 | console.log(color.red('Sorry, something is wrong!')); 113 | console.log(color.red('Please, confirm your path or selector is right.')); 114 | } 115 | } 116 | }; 117 | 118 | module.exports = Html2md; 119 | -------------------------------------------------------------------------------- /lib/summary/index.js: -------------------------------------------------------------------------------- 1 | var _ = require("lodash"); 2 | var color = require('bash-color'); 3 | var fs = require('fs'); 4 | var path = require('path'); 5 | var async = require('async'); 6 | 7 | var bookJson = require('../bookJson'); 8 | var utils = require('../utils'); 9 | var readFile = require('../files').readFile; 10 | 11 | /** 12 | * Get a summary from a fold such as `/path/to/your/book` or `../book` 13 | * @param root path 14 | */ 15 | 16 | // Give some variables 17 | var root, 18 | title, // todo: don`t use `name`? 19 | outputFile, 20 | catalog, 21 | ignores, 22 | unchanged, 23 | sortedBy, 24 | disableTitleFormatting; 25 | 26 | // Get options 27 | function init(options) { 28 | root = options.root || '.'; 29 | var bookConfig = bookJson(root); 30 | utils.rewrite(options, bookConfig); 31 | 32 | outputFile = options.outputfile || bookConfig.outputfile; 33 | catalog = options.catalog || bookConfig.catalog; 34 | ignores = options.ignores || bookConfig.ignores; 35 | unchanged = options.unchanged || bookConfig.unchanged; 36 | title = options.title || bookConfig.title; 37 | sortedBy = options.sortedBy || bookConfig.sortedBy; 38 | disableTitleFormatting = options.disableTitleFormatting || bookConfig.disableTitleFormatting; 39 | } 40 | 41 | // Get summary 42 | function Summary(options) { 43 | var result = '', 44 | desc = '', 45 | step = 0, 46 | skip = null, 47 | filesObj; 48 | 49 | async.auto({ 50 | init: function(next) { 51 | init(options); 52 | 53 | // Ignore the outputFile, for example `SUMMARY` 54 | ignores.push(_.trim(outputFile, '.md')); 55 | 56 | next(); 57 | }, 58 | 59 | files: ['init', function(next) { 60 | filesObj = getFiles(root); 61 | if (filesObj) { 62 | next(); 63 | } else { 64 | next(color.red("Sorry, something is going wrong or no markdowns.")); 65 | } 66 | }], 67 | 68 | parse: ['files', function(next) { 69 | work(filesObj); 70 | next(); 71 | }], 72 | 73 | write: ['parse', function(next) { 74 | title = "# " + title + "\n\n"; 75 | result += title + desc; 76 | 77 | writeFile(outputFile, result); 78 | }] 79 | }, function(err, results) { 80 | console.log(err); 81 | }); 82 | 83 | function work(filesObj) { 84 | _.forEach(filesObj, function(n, key) { 85 | if (!_.includes(ignores, key)) { 86 | if (_.isObject(n)) { 87 | 88 | // It means folderName == subFileName, for example: */assets/assets.md or */Assets/assets.md 89 | if (_.isString(n[key]) || _.isString(n[key.toLowerCase()])) { 90 | var file = n[key] || n[key.toLowerCase()]; 91 | desc += _.repeat(' ', step) + formatCatalog(key, '-') + file; 92 | 93 | // Mark it to skip 94 | skip = key; 95 | } 96 | 97 | // The file is `readme.md` 98 | else if (_.isString(n['readme']) || _.isString(n['Readme']) || _.isString(n['README'])) { 99 | var readmeDir = n['readme'] || n['Readme'] || n['README']; 100 | desc += _.repeat(' ', step) + formatCatalog(key, '-') + readmeDir.replace(/ /g, "%20"); 101 | } else { 102 | desc += _.repeat(' ', step) + "- " + prettyCatalogName(key) + "\n"; 103 | } 104 | 105 | // Start a loop 106 | step += 2; 107 | work(n); 108 | step -= 2; 109 | } else { 110 | // Skip if `skip` exists or key == `readme` 111 | if (isSkiped(key, skip)) { 112 | return; 113 | } 114 | 115 | desc += _.repeat(' ', step) + formatCatalog(key) + n.replace(/ /g, "%20"); 116 | } 117 | } 118 | }); 119 | } 120 | } 121 | 122 | // Get a filesJson Object 123 | function getFiles(root) { 124 | var result = null, 125 | filesJson = {}; 126 | 127 | readFile(root, filesJson, sortedBy); 128 | 129 | if (filesJson) { 130 | result = _.pick(filesJson, filterRules); 131 | } 132 | 133 | return result; 134 | } 135 | 136 | // Filter in the `catalog` and exclude in the `ignores` 137 | function filterRules(n, key) { 138 | var result = null; 139 | 140 | // Ignore hidden files, for example `.git` 141 | if (/^[\.]\w*|_book|node_modules/.test(key)) { 142 | ignores.push(key); 143 | } 144 | 145 | if (catalog === 'all') { 146 | result = !_.includes(ignores, key); 147 | } else { 148 | result = _.includes(catalog, key) && !_.includes(ignores, key); 149 | } 150 | 151 | return result; 152 | } 153 | 154 | // Sign is `-` when folders, `*` when files 155 | function formatCatalog(folderName, sign) { 156 | sign = sign || '*'; 157 | return sign + " [" + prettyCatalogName(folderName) + "]("; 158 | } 159 | 160 | function prettyCatalogName(fileName) { 161 | // Sorted if given a sorted hyphen, for example: `-` or `_` 162 | if (sortedBy) { 163 | var pattern = "^[\\da-zA-Z]*" + sortedBy; 164 | var reg = RegExp(pattern); 165 | 166 | if (reg.test(fileName)) { 167 | var folderNameReg = new RegExp(pattern + "(.*)"); 168 | fileName = fileName.match(folderNameReg)[1]; 169 | } 170 | } 171 | // Don`t format the files like `req.options.*` using dot, unchanged or Chinese string. 172 | if (_.size(fileName.split(".")) > 1 || _.includes(unchanged, fileName) || isChinese(fileName) || 173 | disableTitleFormatting || isNonAscii(fileName)) { 174 | return fileName; 175 | } 176 | return _.startCase(fileName); 177 | } 178 | 179 | function isChinese(string) { 180 | var req = /[\u4E00-\u9FA5]|[\uFE30-\uFFA0]/gi; 181 | if (!req.exec(string)) { 182 | return false; 183 | } else { 184 | return true; 185 | } 186 | } 187 | 188 | function isNonAscii(string) { 189 | var regExp = /^[ -~\t\n\r]+$/gi; 190 | 191 | return !regExp.test(string); 192 | } 193 | 194 | function isSkiped(key, skip) { 195 | var result = !_.isEmpty(skip) && _.isEqual(key.toLowerCase(), skip.toLowerCase()) || _.isEqual(key.toLowerCase(), 'readme'); 196 | return result; 197 | } 198 | 199 | // Write to file encoded with utf-8 200 | function writeFile(fileName, data) { 201 | fs.writeFile(fileName, data, 'utf-8', function() { 202 | console.log(color.green("Finished, generated '"+fileName+"' successfully.")); 203 | }); 204 | } 205 | 206 | module.exports = { 207 | summary: Summary, 208 | isNonAscii: isNonAscii 209 | }; 210 | -------------------------------------------------------------------------------- /lib/utils.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | // copy `from`'s value which is not in `to` 3 | merge: function(from, to) { 4 | for (var key in from) { 5 | if (typeof to[key] === "undefined") { 6 | to[key] = from[key] 7 | } 8 | } 9 | }, 10 | 11 | // copy `from`'s value which key is the same as `to`'s key to `to` 12 | rewrite: function(from, to) { 13 | for (var key in to) { 14 | if (typeof from[key] !== "undefined") { 15 | to[key] = from[key]; 16 | } 17 | } 18 | } 19 | }; 20 | -------------------------------------------------------------------------------- /package-lock.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "gitbook-summary", 3 | "version": "1.2.0", 4 | "lockfileVersion": 1, 5 | "requires": true, 6 | "dependencies": { 7 | "abab": { 8 | "version": "https://registry.npm.taobao.org/abab/download/abab-1.0.4.tgz", 9 | "integrity": "sha1-X6rZwsB/YN12dw9xzwJbYqY8/U4=" 10 | }, 11 | "abbrev": { 12 | "version": "https://registry.npm.taobao.org/abbrev/download/abbrev-1.0.9.tgz", 13 | "integrity": "sha1-kbR5JYinc4wl813W9jdSovh3YTU=", 14 | "dev": true 15 | }, 16 | "acorn": { 17 | "version": "https://registry.npm.taobao.org/acorn/download/acorn-2.7.0.tgz", 18 | "integrity": "sha1-q259nYhqrKiwhbwzEreaGYQz8Oc=" 19 | }, 20 | "acorn-globals": { 21 | "version": "https://registry.npm.taobao.org/acorn-globals/download/acorn-globals-1.0.9.tgz", 22 | "integrity": "sha1-VbtemGkVB7dFedBRNBMhfDgMVM8=", 23 | "requires": { 24 | "acorn": "https://registry.npm.taobao.org/acorn/download/acorn-2.7.0.tgz" 25 | } 26 | }, 27 | "ajv": { 28 | "version": "https://registry.npm.taobao.org/ajv/download/ajv-5.5.1.tgz", 29 | "integrity": "sha1-s4u4h22ehr7plJVqBOch6IskjrI=", 30 | "requires": { 31 | "co": "https://registry.npm.taobao.org/co/download/co-4.6.0.tgz", 32 | "fast-deep-equal": "https://registry.npm.taobao.org/fast-deep-equal/download/fast-deep-equal-1.0.0.tgz", 33 | "fast-json-stable-stringify": "https://registry.npm.taobao.org/fast-json-stable-stringify/download/fast-json-stable-stringify-2.0.0.tgz", 34 | "json-schema-traverse": "https://registry.npm.taobao.org/json-schema-traverse/download/json-schema-traverse-0.3.1.tgz" 35 | } 36 | }, 37 | "align-text": { 38 | "version": "https://registry.npm.taobao.org/align-text/download/align-text-0.1.4.tgz", 39 | "integrity": "sha1-DNkKVhCT810KmSVsIrcGlDP60Rc=", 40 | "dev": true, 41 | "requires": { 42 | "kind-of": "https://registry.npm.taobao.org/kind-of/download/kind-of-3.2.2.tgz", 43 | "longest": "https://registry.npm.taobao.org/longest/download/longest-1.0.1.tgz", 44 | "repeat-string": "https://registry.npm.taobao.org/repeat-string/download/repeat-string-1.6.1.tgz" 45 | } 46 | }, 47 | "amdefine": { 48 | "version": "https://registry.npm.taobao.org/amdefine/download/amdefine-1.0.1.tgz", 49 | "integrity": "sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU=", 50 | "dev": true 51 | }, 52 | "ansi-regex": { 53 | "version": "https://registry.npm.taobao.org/ansi-regex/download/ansi-regex-2.1.1.tgz", 54 | "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", 55 | "dev": true 56 | }, 57 | "ansi-styles": { 58 | "version": "https://registry.npm.taobao.org/ansi-styles/download/ansi-styles-2.2.1.tgz", 59 | "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", 60 | "dev": true 61 | }, 62 | "argparse": { 63 | "version": "https://registry.npm.taobao.org/argparse/download/argparse-1.0.9.tgz", 64 | "integrity": "sha1-c9g7wmP4bpf4zE9rrhsOkKfSLIY=", 65 | "requires": { 66 | "sprintf-js": "https://registry.npm.taobao.org/sprintf-js/download/sprintf-js-1.0.3.tgz" 67 | } 68 | }, 69 | "array-equal": { 70 | "version": "http://registry.npmjs.org/array-equal/-/array-equal-1.0.0.tgz", 71 | "integrity": "sha1-jCpe8kcv2ep0KwTHenUJO6J1fJM=" 72 | }, 73 | "asn1": { 74 | "version": "https://registry.npm.taobao.org/asn1/download/asn1-0.2.3.tgz", 75 | "integrity": "sha1-2sh4dxPJlmhJ/IGAd36+nB3fO4Y=" 76 | }, 77 | "assert-plus": { 78 | "version": "https://registry.npm.taobao.org/assert-plus/download/assert-plus-1.0.0.tgz", 79 | "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=" 80 | }, 81 | "async": { 82 | "version": "https://registry.npm.taobao.org/async/download/async-1.5.2.tgz", 83 | "integrity": "sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo=" 84 | }, 85 | "asynckit": { 86 | "version": "https://registry.npm.taobao.org/asynckit/download/asynckit-0.4.0.tgz", 87 | "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=" 88 | }, 89 | "aws-sign2": { 90 | "version": "https://registry.npm.taobao.org/aws-sign2/download/aws-sign2-0.7.0.tgz", 91 | "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=" 92 | }, 93 | "aws4": { 94 | "version": "https://registry.npm.taobao.org/aws4/download/aws4-1.6.0.tgz", 95 | "integrity": "sha1-g+9cqGCysy5KDe7e6MdxudtXRx4=" 96 | }, 97 | "balanced-match": { 98 | "version": "https://registry.npm.taobao.org/balanced-match/download/balanced-match-1.0.0.tgz", 99 | "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=" 100 | }, 101 | "bash-color": { 102 | "version": "https://registry.npm.taobao.org/bash-color/download/bash-color-0.0.3.tgz", 103 | "integrity": "sha1-DAiSHsATk6tW6kRPCCXlSTyg5qI=" 104 | }, 105 | "bcrypt-pbkdf": { 106 | "version": "https://registry.npm.taobao.org/bcrypt-pbkdf/download/bcrypt-pbkdf-1.0.1.tgz", 107 | "integrity": "sha1-Y7xdy2EzG5K8Bf1SiVPDNGKgb40=", 108 | "optional": true, 109 | "requires": { 110 | "tweetnacl": "https://registry.npm.taobao.org/tweetnacl/download/tweetnacl-0.14.5.tgz" 111 | } 112 | }, 113 | "block-elements": { 114 | "version": "https://registry.npm.taobao.org/block-elements/download/block-elements-1.2.0.tgz", 115 | "integrity": "sha1-jgTMq2OMfiWW9QZftsHHUYyQWl0=" 116 | }, 117 | "boolbase": { 118 | "version": "https://registry.npm.taobao.org/boolbase/download/boolbase-1.0.0.tgz", 119 | "integrity": "sha1-aN/1++YMUes3cl6p4+0xDcwed24=" 120 | }, 121 | "boom": { 122 | "version": "https://registry.npm.taobao.org/boom/download/boom-4.3.1.tgz", 123 | "integrity": "sha1-T4owBctKfjiJ90kDD9JbluAdLjE=", 124 | "requires": { 125 | "hoek": "https://registry.npm.taobao.org/hoek/download/hoek-4.2.0.tgz" 126 | } 127 | }, 128 | "brace-expansion": { 129 | "version": "https://registry.npm.taobao.org/brace-expansion/download/brace-expansion-1.1.8.tgz", 130 | "integrity": "sha1-wHshHHyVLsH479Uad+8NHTmQopI=", 131 | "requires": { 132 | "balanced-match": "https://registry.npm.taobao.org/balanced-match/download/balanced-match-1.0.0.tgz", 133 | "concat-map": "https://registry.npm.taobao.org/concat-map/download/concat-map-0.0.1.tgz" 134 | } 135 | }, 136 | "camelcase": { 137 | "version": "https://registry.npm.taobao.org/camelcase/download/camelcase-1.2.1.tgz", 138 | "integrity": "sha1-m7UwTS4LVmmLLHWLCKPqqdqlijk=", 139 | "dev": true, 140 | "optional": true 141 | }, 142 | "caseless": { 143 | "version": "https://registry.npm.taobao.org/caseless/download/caseless-0.12.0.tgz", 144 | "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=" 145 | }, 146 | "center-align": { 147 | "version": "https://registry.npm.taobao.org/center-align/download/center-align-0.1.3.tgz", 148 | "integrity": "sha1-qg0yYptu6XIgBBHL1EYckHvCt60=", 149 | "dev": true, 150 | "optional": true, 151 | "requires": { 152 | "align-text": "https://registry.npm.taobao.org/align-text/download/align-text-0.1.4.tgz", 153 | "lazy-cache": "https://registry.npm.taobao.org/lazy-cache/download/lazy-cache-1.0.4.tgz" 154 | } 155 | }, 156 | "chalk": { 157 | "version": "https://registry.npm.taobao.org/chalk/download/chalk-1.1.3.tgz", 158 | "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", 159 | "dev": true, 160 | "requires": { 161 | "ansi-styles": "https://registry.npm.taobao.org/ansi-styles/download/ansi-styles-2.2.1.tgz", 162 | "escape-string-regexp": "https://registry.npm.taobao.org/escape-string-regexp/download/escape-string-regexp-1.0.5.tgz", 163 | "has-ansi": "https://registry.npm.taobao.org/has-ansi/download/has-ansi-2.0.0.tgz", 164 | "strip-ansi": "https://registry.npm.taobao.org/strip-ansi/download/strip-ansi-3.0.1.tgz", 165 | "supports-color": "https://registry.npm.taobao.org/supports-color/download/supports-color-2.0.0.tgz" 166 | } 167 | }, 168 | "cheerio": { 169 | "version": "https://registry.npm.taobao.org/cheerio/download/cheerio-0.20.0.tgz", 170 | "integrity": "sha1-XHEPK6uVZTJyhCugHG6mGzVF7DU=", 171 | "requires": { 172 | "css-select": "https://registry.npm.taobao.org/css-select/download/css-select-1.2.0.tgz", 173 | "dom-serializer": "https://registry.npm.taobao.org/dom-serializer/download/dom-serializer-0.1.0.tgz", 174 | "entities": "https://registry.npm.taobao.org/entities/download/entities-1.1.1.tgz", 175 | "htmlparser2": "https://registry.npm.taobao.org/htmlparser2/download/htmlparser2-3.8.3.tgz", 176 | "jsdom": "https://registry.npm.taobao.org/jsdom/download/jsdom-7.2.2.tgz", 177 | "lodash": "https://registry.npm.taobao.org/lodash/download/lodash-4.17.4.tgz" 178 | }, 179 | "dependencies": { 180 | "lodash": { 181 | "version": "https://registry.npm.taobao.org/lodash/download/lodash-4.17.4.tgz", 182 | "integrity": "sha1-eCA6TRwyiuHYbcpkYONptX9AVa4=" 183 | } 184 | } 185 | }, 186 | "cliui": { 187 | "version": "https://registry.npm.taobao.org/cliui/download/cliui-2.1.0.tgz", 188 | "integrity": "sha1-S0dXYP+AJkx2LDoXGQMukcf+oNE=", 189 | "dev": true, 190 | "optional": true, 191 | "requires": { 192 | "center-align": "https://registry.npm.taobao.org/center-align/download/center-align-0.1.3.tgz", 193 | "right-align": "https://registry.npm.taobao.org/right-align/download/right-align-0.1.3.tgz", 194 | "wordwrap": "https://registry.npm.taobao.org/wordwrap/download/wordwrap-0.0.2.tgz" 195 | }, 196 | "dependencies": { 197 | "wordwrap": { 198 | "version": "https://registry.npm.taobao.org/wordwrap/download/wordwrap-0.0.2.tgz", 199 | "integrity": "sha1-t5Zpu0LstAn4PVg8rVLKF+qhZD8=", 200 | "dev": true, 201 | "optional": true 202 | } 203 | } 204 | }, 205 | "co": { 206 | "version": "https://registry.npm.taobao.org/co/download/co-4.6.0.tgz", 207 | "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=" 208 | }, 209 | "collapse-whitespace": { 210 | "version": "https://registry.npm.taobao.org/collapse-whitespace/download/collapse-whitespace-1.1.2.tgz", 211 | "integrity": "sha1-ubMdedVZTuPCLBWBnFSCjlZbMIU=", 212 | "requires": { 213 | "block-elements": "https://registry.npm.taobao.org/block-elements/download/block-elements-1.2.0.tgz", 214 | "void-elements": "https://registry.npm.taobao.org/void-elements/download/void-elements-2.0.1.tgz" 215 | } 216 | }, 217 | "combined-stream": { 218 | "version": "https://registry.npm.taobao.org/combined-stream/download/combined-stream-1.0.5.tgz", 219 | "integrity": "sha1-k4NwpXtKUd6ix3wV1cX9+JUWQAk=", 220 | "requires": { 221 | "delayed-stream": "https://registry.npm.taobao.org/delayed-stream/download/delayed-stream-1.0.0.tgz" 222 | } 223 | }, 224 | "commander": { 225 | "version": "https://registry.npm.taobao.org/commander/download/commander-2.12.2.tgz", 226 | "integrity": "sha1-D1lGxCftnsDZGka7ne9T5UZQ5VU=" 227 | }, 228 | "concat-map": { 229 | "version": "https://registry.npm.taobao.org/concat-map/download/concat-map-0.0.1.tgz", 230 | "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" 231 | }, 232 | "core-util-is": { 233 | "version": "https://registry.npm.taobao.org/core-util-is/download/core-util-is-1.0.2.tgz", 234 | "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=" 235 | }, 236 | "coveralls": { 237 | "version": "https://registry.npm.taobao.org/coveralls/download/coveralls-2.13.3.tgz", 238 | "integrity": "sha1-mtfCrlJ0F/Nh6LYmSD9I7pLdK8c=", 239 | "dev": true, 240 | "requires": { 241 | "js-yaml": "https://registry.npm.taobao.org/js-yaml/download/js-yaml-3.6.1.tgz", 242 | "lcov-parse": "https://registry.npm.taobao.org/lcov-parse/download/lcov-parse-0.0.10.tgz", 243 | "log-driver": "https://registry.npm.taobao.org/log-driver/download/log-driver-1.2.5.tgz", 244 | "minimist": "https://registry.npm.taobao.org/minimist/download/minimist-1.2.0.tgz", 245 | "request": "https://registry.npm.taobao.org/request/download/request-2.79.0.tgz" 246 | }, 247 | "dependencies": { 248 | "assert-plus": { 249 | "version": "https://registry.npm.taobao.org/assert-plus/download/assert-plus-0.2.0.tgz", 250 | "integrity": "sha1-104bh+ev/A24qttwIfP+SBAasjQ=", 251 | "dev": true 252 | }, 253 | "aws-sign2": { 254 | "version": "https://registry.npm.taobao.org/aws-sign2/download/aws-sign2-0.6.0.tgz", 255 | "integrity": "sha1-FDQt0428yU0OW4fXY81jYSwOeU8=", 256 | "dev": true 257 | }, 258 | "boom": { 259 | "version": "https://registry.npm.taobao.org/boom/download/boom-2.10.1.tgz", 260 | "integrity": "sha1-OciRjO/1eZ+D+UkqhI9iWt0Mdm8=", 261 | "dev": true, 262 | "requires": { 263 | "hoek": "https://registry.npm.taobao.org/hoek/download/hoek-2.16.3.tgz" 264 | } 265 | }, 266 | "caseless": { 267 | "version": "https://registry.npm.taobao.org/caseless/download/caseless-0.11.0.tgz", 268 | "integrity": "sha1-cVuW6phBWTzDMGeSP17GDr2k99c=", 269 | "dev": true 270 | }, 271 | "cryptiles": { 272 | "version": "https://registry.npm.taobao.org/cryptiles/download/cryptiles-2.0.5.tgz", 273 | "integrity": "sha1-O9/s3GCBR8HGcgL6KR59ylnqo7g=", 274 | "dev": true, 275 | "requires": { 276 | "boom": "https://registry.npm.taobao.org/boom/download/boom-2.10.1.tgz" 277 | } 278 | }, 279 | "esprima": { 280 | "version": "https://registry.npm.taobao.org/esprima/download/esprima-2.7.3.tgz", 281 | "integrity": "sha1-luO3DVd59q1JzQMmc9HDEnZ7pYE=", 282 | "dev": true 283 | }, 284 | "form-data": { 285 | "version": "https://registry.npm.taobao.org/form-data/download/form-data-2.1.4.tgz", 286 | "integrity": "sha1-M8GDrPGTJ27KqYFDpp6Uv+4XUNE=", 287 | "dev": true, 288 | "requires": { 289 | "asynckit": "https://registry.npm.taobao.org/asynckit/download/asynckit-0.4.0.tgz", 290 | "combined-stream": "https://registry.npm.taobao.org/combined-stream/download/combined-stream-1.0.5.tgz", 291 | "mime-types": "http://registry.npmjs.org/mime-types/-/mime-types-2.1.17.tgz" 292 | } 293 | }, 294 | "har-validator": { 295 | "version": "https://registry.npm.taobao.org/har-validator/download/har-validator-2.0.6.tgz", 296 | "integrity": "sha1-zcvAgYgmWtEZtqWnyKtw7s+10n0=", 297 | "dev": true, 298 | "requires": { 299 | "chalk": "https://registry.npm.taobao.org/chalk/download/chalk-1.1.3.tgz", 300 | "commander": "https://registry.npm.taobao.org/commander/download/commander-2.12.2.tgz", 301 | "is-my-json-valid": "https://registry.npm.taobao.org/is-my-json-valid/download/is-my-json-valid-2.16.1.tgz", 302 | "pinkie-promise": "https://registry.npm.taobao.org/pinkie-promise/download/pinkie-promise-2.0.1.tgz" 303 | } 304 | }, 305 | "hawk": { 306 | "version": "https://registry.npm.taobao.org/hawk/download/hawk-3.1.3.tgz", 307 | "integrity": "sha1-B4REvXwWQLD+VA0sm3PVlnjo4cQ=", 308 | "dev": true, 309 | "requires": { 310 | "boom": "https://registry.npm.taobao.org/boom/download/boom-2.10.1.tgz", 311 | "cryptiles": "https://registry.npm.taobao.org/cryptiles/download/cryptiles-2.0.5.tgz", 312 | "hoek": "https://registry.npm.taobao.org/hoek/download/hoek-2.16.3.tgz", 313 | "sntp": "https://registry.npm.taobao.org/sntp/download/sntp-1.0.9.tgz" 314 | } 315 | }, 316 | "hoek": { 317 | "version": "https://registry.npm.taobao.org/hoek/download/hoek-2.16.3.tgz", 318 | "integrity": "sha1-ILt0A9POo5jpHcRxCo/xuCdKJe0=", 319 | "dev": true 320 | }, 321 | "http-signature": { 322 | "version": "https://registry.npm.taobao.org/http-signature/download/http-signature-1.1.1.tgz", 323 | "integrity": "sha1-33LiZwZs0Kxn+3at+OE0qPvPkb8=", 324 | "dev": true, 325 | "requires": { 326 | "assert-plus": "https://registry.npm.taobao.org/assert-plus/download/assert-plus-0.2.0.tgz", 327 | "jsprim": "https://registry.npm.taobao.org/jsprim/download/jsprim-1.4.1.tgz", 328 | "sshpk": "https://registry.npm.taobao.org/sshpk/download/sshpk-1.13.1.tgz" 329 | } 330 | }, 331 | "js-yaml": { 332 | "version": "https://registry.npm.taobao.org/js-yaml/download/js-yaml-3.6.1.tgz", 333 | "integrity": "sha1-bl/mfYsgXOTSL60Ft3geja3MSzA=", 334 | "dev": true, 335 | "requires": { 336 | "argparse": "https://registry.npm.taobao.org/argparse/download/argparse-1.0.9.tgz", 337 | "esprima": "https://registry.npm.taobao.org/esprima/download/esprima-2.7.3.tgz" 338 | } 339 | }, 340 | "qs": { 341 | "version": "https://registry.npm.taobao.org/qs/download/qs-6.3.2.tgz", 342 | "integrity": "sha1-51vV9uJoEioqDgvaYwslUMFmUCw=", 343 | "dev": true 344 | }, 345 | "request": { 346 | "version": "https://registry.npm.taobao.org/request/download/request-2.79.0.tgz", 347 | "integrity": "sha1-Tf5b9r6LjNw3/Pk+BLZVd3InEN4=", 348 | "dev": true, 349 | "requires": { 350 | "aws-sign2": "https://registry.npm.taobao.org/aws-sign2/download/aws-sign2-0.6.0.tgz", 351 | "aws4": "https://registry.npm.taobao.org/aws4/download/aws4-1.6.0.tgz", 352 | "caseless": "https://registry.npm.taobao.org/caseless/download/caseless-0.11.0.tgz", 353 | "combined-stream": "https://registry.npm.taobao.org/combined-stream/download/combined-stream-1.0.5.tgz", 354 | "extend": "https://registry.npm.taobao.org/extend/download/extend-3.0.1.tgz", 355 | "forever-agent": "https://registry.npm.taobao.org/forever-agent/download/forever-agent-0.6.1.tgz", 356 | "form-data": "https://registry.npm.taobao.org/form-data/download/form-data-2.1.4.tgz", 357 | "har-validator": "https://registry.npm.taobao.org/har-validator/download/har-validator-2.0.6.tgz", 358 | "hawk": "https://registry.npm.taobao.org/hawk/download/hawk-3.1.3.tgz", 359 | "http-signature": "https://registry.npm.taobao.org/http-signature/download/http-signature-1.1.1.tgz", 360 | "is-typedarray": "https://registry.npm.taobao.org/is-typedarray/download/is-typedarray-1.0.0.tgz", 361 | "isstream": "https://registry.npm.taobao.org/isstream/download/isstream-0.1.2.tgz", 362 | "json-stringify-safe": "https://registry.npm.taobao.org/json-stringify-safe/download/json-stringify-safe-5.0.1.tgz", 363 | "mime-types": "http://registry.npmjs.org/mime-types/-/mime-types-2.1.17.tgz", 364 | "oauth-sign": "https://registry.npm.taobao.org/oauth-sign/download/oauth-sign-0.8.2.tgz", 365 | "qs": "https://registry.npm.taobao.org/qs/download/qs-6.3.2.tgz", 366 | "stringstream": "https://registry.npm.taobao.org/stringstream/download/stringstream-0.0.5.tgz", 367 | "tough-cookie": "https://registry.npm.taobao.org/tough-cookie/download/tough-cookie-2.3.3.tgz", 368 | "tunnel-agent": "https://registry.npm.taobao.org/tunnel-agent/download/tunnel-agent-0.4.3.tgz", 369 | "uuid": "https://registry.npm.taobao.org/uuid/download/uuid-3.1.0.tgz" 370 | } 371 | }, 372 | "sntp": { 373 | "version": "https://registry.npm.taobao.org/sntp/download/sntp-1.0.9.tgz", 374 | "integrity": "sha1-ZUEYTMkK7qbG57NeJlkIJEPGYZg=", 375 | "dev": true, 376 | "requires": { 377 | "hoek": "https://registry.npm.taobao.org/hoek/download/hoek-2.16.3.tgz" 378 | } 379 | }, 380 | "tunnel-agent": { 381 | "version": "https://registry.npm.taobao.org/tunnel-agent/download/tunnel-agent-0.4.3.tgz", 382 | "integrity": "sha1-Y3PbdpCf5XDgjXNYM2Xtgop07us=", 383 | "dev": true 384 | } 385 | } 386 | }, 387 | "cryptiles": { 388 | "version": "https://registry.npm.taobao.org/cryptiles/download/cryptiles-3.1.2.tgz", 389 | "integrity": "sha1-qJ+7Ig9c4l7FboxKqKT9e1sNKf4=", 390 | "requires": { 391 | "boom": "https://registry.npm.taobao.org/boom/download/boom-5.2.0.tgz" 392 | }, 393 | "dependencies": { 394 | "boom": { 395 | "version": "https://registry.npm.taobao.org/boom/download/boom-5.2.0.tgz", 396 | "integrity": "sha1-XdnabuOl8wIHdDYpDLcX0/SlTgI=", 397 | "requires": { 398 | "hoek": "https://registry.npm.taobao.org/hoek/download/hoek-4.2.0.tgz" 399 | } 400 | } 401 | } 402 | }, 403 | "css-select": { 404 | "version": "https://registry.npm.taobao.org/css-select/download/css-select-1.2.0.tgz", 405 | "integrity": "sha1-KzoRBTnFNV8c2NMUYj6HCxIeyFg=", 406 | "requires": { 407 | "boolbase": "https://registry.npm.taobao.org/boolbase/download/boolbase-1.0.0.tgz", 408 | "css-what": "https://registry.npm.taobao.org/css-what/download/css-what-2.1.0.tgz", 409 | "domutils": "https://registry.npm.taobao.org/domutils/download/domutils-1.5.1.tgz", 410 | "nth-check": "https://registry.npm.taobao.org/nth-check/download/nth-check-1.0.1.tgz" 411 | } 412 | }, 413 | "css-what": { 414 | "version": "https://registry.npm.taobao.org/css-what/download/css-what-2.1.0.tgz", 415 | "integrity": "sha1-lGfQMsOM+u+58teVASUwYvh/ob0=" 416 | }, 417 | "cssom": { 418 | "version": "http://registry.npmjs.org/cssom/-/cssom-0.3.2.tgz", 419 | "integrity": "sha1-uANhcMefB6kP8vFuIihAJ6JDhIs=" 420 | }, 421 | "cssstyle": { 422 | "version": "http://registry.npmjs.org/cssstyle/-/cssstyle-0.2.37.tgz", 423 | "integrity": "sha1-VBCXI0yyUTyDzu06zdwn/yeYfVQ=", 424 | "requires": { 425 | "cssom": "http://registry.npmjs.org/cssom/-/cssom-0.3.2.tgz" 426 | } 427 | }, 428 | "dashdash": { 429 | "version": "https://registry.npm.taobao.org/dashdash/download/dashdash-1.14.1.tgz", 430 | "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", 431 | "requires": { 432 | "assert-plus": "https://registry.npm.taobao.org/assert-plus/download/assert-plus-1.0.0.tgz" 433 | } 434 | }, 435 | "debug": { 436 | "version": "https://registry.npm.taobao.org/debug/download/debug-2.2.0.tgz", 437 | "integrity": "sha1-+HBX6ZWxofauaklgZkE3vFbwOdo=", 438 | "dev": true, 439 | "requires": { 440 | "ms": "https://registry.npm.taobao.org/ms/download/ms-0.7.1.tgz" 441 | } 442 | }, 443 | "decamelize": { 444 | "version": "https://registry.npm.taobao.org/decamelize/download/decamelize-1.2.0.tgz", 445 | "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", 446 | "dev": true, 447 | "optional": true 448 | }, 449 | "deep-is": { 450 | "version": "https://registry.npm.taobao.org/deep-is/download/deep-is-0.1.3.tgz", 451 | "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=" 452 | }, 453 | "delayed-stream": { 454 | "version": "https://registry.npm.taobao.org/delayed-stream/download/delayed-stream-1.0.0.tgz", 455 | "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=" 456 | }, 457 | "diff": { 458 | "version": "https://registry.npm.taobao.org/diff/download/diff-1.4.0.tgz", 459 | "integrity": "sha1-fyjS657nsVqX79ic5j3P2qPMur8=", 460 | "dev": true 461 | }, 462 | "dom-serializer": { 463 | "version": "https://registry.npm.taobao.org/dom-serializer/download/dom-serializer-0.1.0.tgz", 464 | "integrity": "sha1-BzxpdUbOB4DOI75KKOKT5AvDDII=", 465 | "requires": { 466 | "domelementtype": "https://registry.npm.taobao.org/domelementtype/download/domelementtype-1.1.3.tgz", 467 | "entities": "https://registry.npm.taobao.org/entities/download/entities-1.1.1.tgz" 468 | }, 469 | "dependencies": { 470 | "domelementtype": { 471 | "version": "https://registry.npm.taobao.org/domelementtype/download/domelementtype-1.1.3.tgz", 472 | "integrity": "sha1-vSh3PiZCiBrsUVRJJCmcXNgiGFs=" 473 | } 474 | } 475 | }, 476 | "domelementtype": { 477 | "version": "https://registry.npm.taobao.org/domelementtype/download/domelementtype-1.3.0.tgz", 478 | "integrity": "sha1-sXrtguirWeUt2cGbF1bg/BhyBMI=" 479 | }, 480 | "domhandler": { 481 | "version": "https://registry.npm.taobao.org/domhandler/download/domhandler-2.3.0.tgz", 482 | "integrity": "sha1-LeWaCCLVAn+r/28DLCsloqir5zg=", 483 | "requires": { 484 | "domelementtype": "https://registry.npm.taobao.org/domelementtype/download/domelementtype-1.3.0.tgz" 485 | } 486 | }, 487 | "domutils": { 488 | "version": "https://registry.npm.taobao.org/domutils/download/domutils-1.5.1.tgz", 489 | "integrity": "sha1-3NhIiib1Y9YQeeSMn3t+Mjc2gs8=", 490 | "requires": { 491 | "dom-serializer": "https://registry.npm.taobao.org/dom-serializer/download/dom-serializer-0.1.0.tgz", 492 | "domelementtype": "https://registry.npm.taobao.org/domelementtype/download/domelementtype-1.3.0.tgz" 493 | } 494 | }, 495 | "ecc-jsbn": { 496 | "version": "https://registry.npm.taobao.org/ecc-jsbn/download/ecc-jsbn-0.1.1.tgz", 497 | "integrity": "sha1-D8c6ntXw1Tw4GTOYUj735UN3dQU=", 498 | "optional": true, 499 | "requires": { 500 | "jsbn": "https://registry.npm.taobao.org/jsbn/download/jsbn-0.1.1.tgz" 501 | } 502 | }, 503 | "entities": { 504 | "version": "https://registry.npm.taobao.org/entities/download/entities-1.1.1.tgz", 505 | "integrity": "sha1-blwtClYhtdra7O+AuQ7ftc13cvA=" 506 | }, 507 | "escape-string-regexp": { 508 | "version": "https://registry.npm.taobao.org/escape-string-regexp/download/escape-string-regexp-1.0.5.tgz", 509 | "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", 510 | "dev": true 511 | }, 512 | "escodegen": { 513 | "version": "http://registry.npmjs.org/escodegen/-/escodegen-1.9.0.tgz", 514 | "integrity": "sha1-mBGi8mXcHNOJRCDuNxcGS2MriFI=", 515 | "requires": { 516 | "esprima": "https://registry.npm.taobao.org/esprima/download/esprima-3.1.3.tgz", 517 | "estraverse": "https://registry.npm.taobao.org/estraverse/download/estraverse-4.2.0.tgz", 518 | "esutils": "https://registry.npm.taobao.org/esutils/download/esutils-2.0.2.tgz", 519 | "optionator": "https://registry.npm.taobao.org/optionator/download/optionator-0.8.2.tgz", 520 | "source-map": "http://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz" 521 | } 522 | }, 523 | "esprima": { 524 | "version": "https://registry.npm.taobao.org/esprima/download/esprima-3.1.3.tgz", 525 | "integrity": "sha1-/cpRzuYTOJXjyI1TXOSdv/YqRjM=" 526 | }, 527 | "estraverse": { 528 | "version": "https://registry.npm.taobao.org/estraverse/download/estraverse-4.2.0.tgz", 529 | "integrity": "sha1-De4/7TH81GlhjOc0IJn8GvoL2xM=" 530 | }, 531 | "esutils": { 532 | "version": "https://registry.npm.taobao.org/esutils/download/esutils-2.0.2.tgz", 533 | "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=" 534 | }, 535 | "extend": { 536 | "version": "https://registry.npm.taobao.org/extend/download/extend-3.0.1.tgz", 537 | "integrity": "sha1-p1Xqe8Gt/MWjHOfnYtuq3F5jZEQ=" 538 | }, 539 | "extsprintf": { 540 | "version": "https://registry.npm.taobao.org/extsprintf/download/extsprintf-1.3.0.tgz", 541 | "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=" 542 | }, 543 | "fast-deep-equal": { 544 | "version": "https://registry.npm.taobao.org/fast-deep-equal/download/fast-deep-equal-1.0.0.tgz", 545 | "integrity": "sha1-liVqO8l1WV6zbYLpkp0GDYk0Of8=" 546 | }, 547 | "fast-json-stable-stringify": { 548 | "version": "https://registry.npm.taobao.org/fast-json-stable-stringify/download/fast-json-stable-stringify-2.0.0.tgz", 549 | "integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I=" 550 | }, 551 | "fast-levenshtein": { 552 | "version": "https://registry.npm.taobao.org/fast-levenshtein/download/fast-levenshtein-2.0.6.tgz", 553 | "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=" 554 | }, 555 | "forever-agent": { 556 | "version": "https://registry.npm.taobao.org/forever-agent/download/forever-agent-0.6.1.tgz", 557 | "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=" 558 | }, 559 | "form-data": { 560 | "version": "http://registry.npmjs.org/form-data/-/form-data-2.3.1.tgz", 561 | "integrity": "sha1-b7lPvXGIUwbXPRXMSX/kzE7NRL8=", 562 | "requires": { 563 | "asynckit": "https://registry.npm.taobao.org/asynckit/download/asynckit-0.4.0.tgz", 564 | "combined-stream": "https://registry.npm.taobao.org/combined-stream/download/combined-stream-1.0.5.tgz", 565 | "mime-types": "http://registry.npmjs.org/mime-types/-/mime-types-2.1.17.tgz" 566 | } 567 | }, 568 | "front-matter": { 569 | "version": "https://registry.npm.taobao.org/front-matter/download/front-matter-2.3.0.tgz", 570 | "integrity": "sha1-cgOviWzjV+4E4qpFFp6pHtf2dQQ=", 571 | "requires": { 572 | "js-yaml": "http://registry.npmjs.org/js-yaml/-/js-yaml-3.10.0.tgz" 573 | } 574 | }, 575 | "fs-extra": { 576 | "version": "https://registry.npm.taobao.org/fs-extra/download/fs-extra-0.26.7.tgz", 577 | "integrity": "sha1-muH92UiXeY7at20JGM9C0MMYT6k=", 578 | "requires": { 579 | "graceful-fs": "https://registry.npm.taobao.org/graceful-fs/download/graceful-fs-4.1.11.tgz", 580 | "jsonfile": "https://registry.npm.taobao.org/jsonfile/download/jsonfile-2.4.0.tgz", 581 | "klaw": "https://registry.npm.taobao.org/klaw/download/klaw-1.3.1.tgz", 582 | "path-is-absolute": "https://registry.npm.taobao.org/path-is-absolute/download/path-is-absolute-1.0.1.tgz", 583 | "rimraf": "http://registry.npmjs.org/rimraf/-/rimraf-2.6.2.tgz" 584 | } 585 | }, 586 | "fs.realpath": { 587 | "version": "https://registry.npm.taobao.org/fs.realpath/download/fs.realpath-1.0.0.tgz", 588 | "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" 589 | }, 590 | "generate-function": { 591 | "version": "https://registry.npm.taobao.org/generate-function/download/generate-function-2.0.0.tgz", 592 | "integrity": "sha1-aFj+fAlpt9TpCTM3ZHrHn2DfvnQ=", 593 | "dev": true 594 | }, 595 | "generate-object-property": { 596 | "version": "https://registry.npm.taobao.org/generate-object-property/download/generate-object-property-1.2.0.tgz", 597 | "integrity": "sha1-nA4cQDCM6AT0eDYYuTf6iPmdUNA=", 598 | "dev": true, 599 | "requires": { 600 | "is-property": "https://registry.npm.taobao.org/is-property/download/is-property-1.0.2.tgz" 601 | } 602 | }, 603 | "getpass": { 604 | "version": "https://registry.npm.taobao.org/getpass/download/getpass-0.1.7.tgz", 605 | "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", 606 | "requires": { 607 | "assert-plus": "https://registry.npm.taobao.org/assert-plus/download/assert-plus-1.0.0.tgz" 608 | } 609 | }, 610 | "glob": { 611 | "version": "https://registry.npm.taobao.org/glob/download/glob-7.1.2.tgz", 612 | "integrity": "sha1-wZyd+aAocC1nhhI4SmVSQExjbRU=", 613 | "requires": { 614 | "fs.realpath": "https://registry.npm.taobao.org/fs.realpath/download/fs.realpath-1.0.0.tgz", 615 | "inflight": "https://registry.npm.taobao.org/inflight/download/inflight-1.0.6.tgz", 616 | "inherits": "https://registry.npm.taobao.org/inherits/download/inherits-2.0.3.tgz", 617 | "minimatch": "https://registry.npm.taobao.org/minimatch/download/minimatch-3.0.4.tgz", 618 | "once": "https://registry.npm.taobao.org/once/download/once-1.4.0.tgz", 619 | "path-is-absolute": "https://registry.npm.taobao.org/path-is-absolute/download/path-is-absolute-1.0.1.tgz" 620 | } 621 | }, 622 | "graceful-fs": { 623 | "version": "https://registry.npm.taobao.org/graceful-fs/download/graceful-fs-4.1.11.tgz", 624 | "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=" 625 | }, 626 | "growl": { 627 | "version": "https://registry.npm.taobao.org/growl/download/growl-1.9.2.tgz", 628 | "integrity": "sha1-Dqd0NxXbjY3ixe3hd14bRayFwC8=", 629 | "dev": true 630 | }, 631 | "handlebars": { 632 | "version": "https://registry.npm.taobao.org/handlebars/download/handlebars-4.0.11.tgz", 633 | "integrity": "sha1-Ywo13+ApS8KB7a5v/F0yn8eYLcw=", 634 | "dev": true, 635 | "requires": { 636 | "async": "https://registry.npm.taobao.org/async/download/async-1.5.2.tgz", 637 | "optimist": "https://registry.npm.taobao.org/optimist/download/optimist-0.6.1.tgz", 638 | "source-map": "https://registry.npm.taobao.org/source-map/download/source-map-0.4.4.tgz", 639 | "uglify-js": "https://registry.npm.taobao.org/uglify-js/download/uglify-js-2.8.29.tgz" 640 | }, 641 | "dependencies": { 642 | "source-map": { 643 | "version": "https://registry.npm.taobao.org/source-map/download/source-map-0.4.4.tgz", 644 | "integrity": "sha1-66T12pwNyZneaAMti092FzZSA2s=", 645 | "dev": true, 646 | "requires": { 647 | "amdefine": "https://registry.npm.taobao.org/amdefine/download/amdefine-1.0.1.tgz" 648 | } 649 | } 650 | } 651 | }, 652 | "har-schema": { 653 | "version": "https://registry.npm.taobao.org/har-schema/download/har-schema-2.0.0.tgz", 654 | "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=" 655 | }, 656 | "har-validator": { 657 | "version": "https://registry.npm.taobao.org/har-validator/download/har-validator-5.0.3.tgz", 658 | "integrity": "sha1-ukAsJmGU8VlW7xXg/PJCmT9qff0=", 659 | "requires": { 660 | "ajv": "https://registry.npm.taobao.org/ajv/download/ajv-5.5.1.tgz", 661 | "har-schema": "https://registry.npm.taobao.org/har-schema/download/har-schema-2.0.0.tgz" 662 | } 663 | }, 664 | "has-ansi": { 665 | "version": "https://registry.npm.taobao.org/has-ansi/download/has-ansi-2.0.0.tgz", 666 | "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", 667 | "dev": true, 668 | "requires": { 669 | "ansi-regex": "https://registry.npm.taobao.org/ansi-regex/download/ansi-regex-2.1.1.tgz" 670 | } 671 | }, 672 | "has-flag": { 673 | "version": "https://registry.npm.taobao.org/has-flag/download/has-flag-1.0.0.tgz", 674 | "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", 675 | "dev": true 676 | }, 677 | "hawk": { 678 | "version": "https://registry.npm.taobao.org/hawk/download/hawk-6.0.2.tgz", 679 | "integrity": "sha1-r02RTrBl+bXOTZ0RwcshJu7MMDg=", 680 | "requires": { 681 | "boom": "https://registry.npm.taobao.org/boom/download/boom-4.3.1.tgz", 682 | "cryptiles": "https://registry.npm.taobao.org/cryptiles/download/cryptiles-3.1.2.tgz", 683 | "hoek": "https://registry.npm.taobao.org/hoek/download/hoek-4.2.0.tgz", 684 | "sntp": "https://registry.npm.taobao.org/sntp/download/sntp-2.1.0.tgz" 685 | } 686 | }, 687 | "hoek": { 688 | "version": "https://registry.npm.taobao.org/hoek/download/hoek-4.2.0.tgz", 689 | "integrity": "sha1-ctnQdU9/4lyi0BrY+PmpRJqJUm0=" 690 | }, 691 | "htmlparser2": { 692 | "version": "https://registry.npm.taobao.org/htmlparser2/download/htmlparser2-3.8.3.tgz", 693 | "integrity": "sha1-mWwosZFRaovoZQGn15dX5ccMEGg=", 694 | "requires": { 695 | "domelementtype": "https://registry.npm.taobao.org/domelementtype/download/domelementtype-1.3.0.tgz", 696 | "domhandler": "https://registry.npm.taobao.org/domhandler/download/domhandler-2.3.0.tgz", 697 | "domutils": "https://registry.npm.taobao.org/domutils/download/domutils-1.5.1.tgz", 698 | "entities": "https://registry.npm.taobao.org/entities/download/entities-1.0.0.tgz", 699 | "readable-stream": "https://registry.npm.taobao.org/readable-stream/download/readable-stream-1.1.14.tgz" 700 | }, 701 | "dependencies": { 702 | "entities": { 703 | "version": "https://registry.npm.taobao.org/entities/download/entities-1.0.0.tgz", 704 | "integrity": "sha1-sph6o4ITR/zeZCsk/fyeT7cSvyY=" 705 | } 706 | } 707 | }, 708 | "http-signature": { 709 | "version": "https://registry.npm.taobao.org/http-signature/download/http-signature-1.2.0.tgz", 710 | "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=", 711 | "requires": { 712 | "assert-plus": "https://registry.npm.taobao.org/assert-plus/download/assert-plus-1.0.0.tgz", 713 | "jsprim": "https://registry.npm.taobao.org/jsprim/download/jsprim-1.4.1.tgz", 714 | "sshpk": "https://registry.npm.taobao.org/sshpk/download/sshpk-1.13.1.tgz" 715 | } 716 | }, 717 | "iconv-lite": { 718 | "version": "http://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.19.tgz", 719 | "integrity": "sha1-90aPYBNfXl2tM5nAqBvpoWA6CCs=" 720 | }, 721 | "inflight": { 722 | "version": "https://registry.npm.taobao.org/inflight/download/inflight-1.0.6.tgz", 723 | "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", 724 | "requires": { 725 | "once": "https://registry.npm.taobao.org/once/download/once-1.4.0.tgz", 726 | "wrappy": "https://registry.npm.taobao.org/wrappy/download/wrappy-1.0.2.tgz" 727 | } 728 | }, 729 | "inherits": { 730 | "version": "https://registry.npm.taobao.org/inherits/download/inherits-2.0.3.tgz", 731 | "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" 732 | }, 733 | "is-buffer": { 734 | "version": "https://registry.npm.taobao.org/is-buffer/download/is-buffer-1.1.6.tgz", 735 | "integrity": "sha1-76ouqdqg16suoTqXsritUf776L4=", 736 | "dev": true 737 | }, 738 | "is-my-json-valid": { 739 | "version": "https://registry.npm.taobao.org/is-my-json-valid/download/is-my-json-valid-2.16.1.tgz", 740 | "integrity": "sha1-WoRnd+LCYg0eaRBOXToDsfYIjxE=", 741 | "dev": true, 742 | "requires": { 743 | "generate-function": "https://registry.npm.taobao.org/generate-function/download/generate-function-2.0.0.tgz", 744 | "generate-object-property": "https://registry.npm.taobao.org/generate-object-property/download/generate-object-property-1.2.0.tgz", 745 | "jsonpointer": "https://registry.npm.taobao.org/jsonpointer/download/jsonpointer-4.0.1.tgz", 746 | "xtend": "https://registry.npm.taobao.org/xtend/download/xtend-4.0.1.tgz" 747 | } 748 | }, 749 | "is-property": { 750 | "version": "https://registry.npm.taobao.org/is-property/download/is-property-1.0.2.tgz", 751 | "integrity": "sha1-V/4cTkhHTt1lsJkR8msc1Ald2oQ=", 752 | "dev": true 753 | }, 754 | "is-typedarray": { 755 | "version": "https://registry.npm.taobao.org/is-typedarray/download/is-typedarray-1.0.0.tgz", 756 | "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=" 757 | }, 758 | "isarray": { 759 | "version": "https://registry.npm.taobao.org/isarray/download/isarray-0.0.1.tgz", 760 | "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=" 761 | }, 762 | "isexe": { 763 | "version": "https://registry.npm.taobao.org/isexe/download/isexe-2.0.0.tgz", 764 | "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", 765 | "dev": true 766 | }, 767 | "isstream": { 768 | "version": "https://registry.npm.taobao.org/isstream/download/isstream-0.1.2.tgz", 769 | "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=" 770 | }, 771 | "istanbul": { 772 | "version": "https://registry.npm.taobao.org/istanbul/download/istanbul-0.4.5.tgz", 773 | "integrity": "sha1-ZcfXPUxNqE1POsMQuRj7C4Azczs=", 774 | "dev": true, 775 | "requires": { 776 | "abbrev": "https://registry.npm.taobao.org/abbrev/download/abbrev-1.0.9.tgz", 777 | "async": "https://registry.npm.taobao.org/async/download/async-1.5.2.tgz", 778 | "escodegen": "https://registry.npm.taobao.org/escodegen/download/escodegen-1.8.1.tgz", 779 | "esprima": "https://registry.npm.taobao.org/esprima/download/esprima-2.7.3.tgz", 780 | "glob": "https://registry.npm.taobao.org/glob/download/glob-5.0.15.tgz", 781 | "handlebars": "https://registry.npm.taobao.org/handlebars/download/handlebars-4.0.11.tgz", 782 | "js-yaml": "http://registry.npmjs.org/js-yaml/-/js-yaml-3.10.0.tgz", 783 | "mkdirp": "https://registry.npm.taobao.org/mkdirp/download/mkdirp-0.5.1.tgz", 784 | "nopt": "https://registry.npm.taobao.org/nopt/download/nopt-3.0.6.tgz", 785 | "once": "https://registry.npm.taobao.org/once/download/once-1.4.0.tgz", 786 | "resolve": "https://registry.npm.taobao.org/resolve/download/resolve-1.1.7.tgz", 787 | "supports-color": "https://registry.npm.taobao.org/supports-color/download/supports-color-3.2.3.tgz", 788 | "which": "https://registry.npm.taobao.org/which/download/which-1.3.0.tgz", 789 | "wordwrap": "https://registry.npm.taobao.org/wordwrap/download/wordwrap-1.0.0.tgz" 790 | }, 791 | "dependencies": { 792 | "escodegen": { 793 | "version": "https://registry.npm.taobao.org/escodegen/download/escodegen-1.8.1.tgz", 794 | "integrity": "sha1-WltTr0aTEQvrsIZ6o0MN07cKEBg=", 795 | "dev": true, 796 | "requires": { 797 | "esprima": "https://registry.npm.taobao.org/esprima/download/esprima-2.7.3.tgz", 798 | "estraverse": "https://registry.npm.taobao.org/estraverse/download/estraverse-1.9.3.tgz", 799 | "esutils": "https://registry.npm.taobao.org/esutils/download/esutils-2.0.2.tgz", 800 | "optionator": "https://registry.npm.taobao.org/optionator/download/optionator-0.8.2.tgz", 801 | "source-map": "https://registry.npm.taobao.org/source-map/download/source-map-0.2.0.tgz" 802 | } 803 | }, 804 | "esprima": { 805 | "version": "https://registry.npm.taobao.org/esprima/download/esprima-2.7.3.tgz", 806 | "integrity": "sha1-luO3DVd59q1JzQMmc9HDEnZ7pYE=", 807 | "dev": true 808 | }, 809 | "estraverse": { 810 | "version": "https://registry.npm.taobao.org/estraverse/download/estraverse-1.9.3.tgz", 811 | "integrity": "sha1-r2fy3JIlgkFZUJJgkaQAXSnJu0Q=", 812 | "dev": true 813 | }, 814 | "glob": { 815 | "version": "https://registry.npm.taobao.org/glob/download/glob-5.0.15.tgz", 816 | "integrity": "sha1-G8k2ueAvSmA/zCIuz3Yz0wuLk7E=", 817 | "dev": true, 818 | "requires": { 819 | "inflight": "https://registry.npm.taobao.org/inflight/download/inflight-1.0.6.tgz", 820 | "inherits": "https://registry.npm.taobao.org/inherits/download/inherits-2.0.3.tgz", 821 | "minimatch": "https://registry.npm.taobao.org/minimatch/download/minimatch-3.0.4.tgz", 822 | "once": "https://registry.npm.taobao.org/once/download/once-1.4.0.tgz", 823 | "path-is-absolute": "https://registry.npm.taobao.org/path-is-absolute/download/path-is-absolute-1.0.1.tgz" 824 | } 825 | }, 826 | "source-map": { 827 | "version": "https://registry.npm.taobao.org/source-map/download/source-map-0.2.0.tgz", 828 | "integrity": "sha1-2rc/vPwrqBm03gO9b26qSBZLP50=", 829 | "dev": true, 830 | "optional": true, 831 | "requires": { 832 | "amdefine": "https://registry.npm.taobao.org/amdefine/download/amdefine-1.0.1.tgz" 833 | } 834 | }, 835 | "supports-color": { 836 | "version": "https://registry.npm.taobao.org/supports-color/download/supports-color-3.2.3.tgz", 837 | "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", 838 | "dev": true, 839 | "requires": { 840 | "has-flag": "https://registry.npm.taobao.org/has-flag/download/has-flag-1.0.0.tgz" 841 | } 842 | } 843 | } 844 | }, 845 | "jade": { 846 | "version": "https://registry.npm.taobao.org/jade/download/jade-0.26.3.tgz", 847 | "integrity": "sha1-jxDXl32NefL2/4YqgbBRPMslaGw=", 848 | "dev": true, 849 | "requires": { 850 | "commander": "https://registry.npm.taobao.org/commander/download/commander-0.6.1.tgz", 851 | "mkdirp": "https://registry.npm.taobao.org/mkdirp/download/mkdirp-0.3.0.tgz" 852 | }, 853 | "dependencies": { 854 | "commander": { 855 | "version": "https://registry.npm.taobao.org/commander/download/commander-0.6.1.tgz", 856 | "integrity": "sha1-+mihT2qUXVTbvlDYzbMyDp47GgY=", 857 | "dev": true 858 | }, 859 | "mkdirp": { 860 | "version": "https://registry.npm.taobao.org/mkdirp/download/mkdirp-0.3.0.tgz", 861 | "integrity": "sha1-G79asbqCevI1dRQ0kEJkVfSB/h4=", 862 | "dev": true 863 | } 864 | } 865 | }, 866 | "js-yaml": { 867 | "version": "http://registry.npmjs.org/js-yaml/-/js-yaml-3.10.0.tgz", 868 | "integrity": "sha1-LnhEFka9RoLpY/IrbpKCPDCcYtw=", 869 | "requires": { 870 | "argparse": "https://registry.npm.taobao.org/argparse/download/argparse-1.0.9.tgz", 871 | "esprima": "https://registry.npm.taobao.org/esprima/download/esprima-4.0.0.tgz" 872 | }, 873 | "dependencies": { 874 | "esprima": { 875 | "version": "https://registry.npm.taobao.org/esprima/download/esprima-4.0.0.tgz", 876 | "integrity": "sha1-RJnt3NERDgshi6zy+n9/WfVcqAQ=" 877 | } 878 | } 879 | }, 880 | "jsbn": { 881 | "version": "https://registry.npm.taobao.org/jsbn/download/jsbn-0.1.1.tgz", 882 | "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=", 883 | "optional": true 884 | }, 885 | "jsdom": { 886 | "version": "https://registry.npm.taobao.org/jsdom/download/jsdom-7.2.2.tgz", 887 | "integrity": "sha1-QLQCdwwr2iNGkJa+6Rq2deOx/G4=", 888 | "optional": true, 889 | "requires": { 890 | "abab": "https://registry.npm.taobao.org/abab/download/abab-1.0.4.tgz", 891 | "acorn": "https://registry.npm.taobao.org/acorn/download/acorn-2.7.0.tgz", 892 | "acorn-globals": "https://registry.npm.taobao.org/acorn-globals/download/acorn-globals-1.0.9.tgz", 893 | "cssom": "http://registry.npmjs.org/cssom/-/cssom-0.3.2.tgz", 894 | "cssstyle": "http://registry.npmjs.org/cssstyle/-/cssstyle-0.2.37.tgz", 895 | "escodegen": "http://registry.npmjs.org/escodegen/-/escodegen-1.9.0.tgz", 896 | "nwmatcher": "https://registry.npm.taobao.org/nwmatcher/download/nwmatcher-1.4.3.tgz", 897 | "parse5": "http://registry.npmjs.org/parse5/-/parse5-1.5.1.tgz", 898 | "request": "https://registry.npm.taobao.org/request/download/request-2.83.0.tgz", 899 | "sax": "https://registry.npm.taobao.org/sax/download/sax-1.2.4.tgz", 900 | "symbol-tree": "http://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.2.tgz", 901 | "tough-cookie": "https://registry.npm.taobao.org/tough-cookie/download/tough-cookie-2.3.3.tgz", 902 | "webidl-conversions": "https://registry.npm.taobao.org/webidl-conversions/download/webidl-conversions-2.0.1.tgz", 903 | "whatwg-url-compat": "https://registry.npm.taobao.org/whatwg-url-compat/download/whatwg-url-compat-0.6.5.tgz", 904 | "xml-name-validator": "http://registry.npmjs.org/xml-name-validator/-/xml-name-validator-2.0.1.tgz" 905 | } 906 | }, 907 | "json-schema": { 908 | "version": "https://registry.npm.taobao.org/json-schema/download/json-schema-0.2.3.tgz", 909 | "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=" 910 | }, 911 | "json-schema-traverse": { 912 | "version": "https://registry.npm.taobao.org/json-schema-traverse/download/json-schema-traverse-0.3.1.tgz", 913 | "integrity": "sha1-NJptRMU6Ud6JtAgFxdXlm0F9M0A=" 914 | }, 915 | "json-stringify-safe": { 916 | "version": "https://registry.npm.taobao.org/json-stringify-safe/download/json-stringify-safe-5.0.1.tgz", 917 | "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=" 918 | }, 919 | "jsonfile": { 920 | "version": "https://registry.npm.taobao.org/jsonfile/download/jsonfile-2.4.0.tgz", 921 | "integrity": "sha1-NzaitCi4e72gzIO1P6PWM6NcKug=", 922 | "requires": { 923 | "graceful-fs": "https://registry.npm.taobao.org/graceful-fs/download/graceful-fs-4.1.11.tgz" 924 | } 925 | }, 926 | "jsonpointer": { 927 | "version": "https://registry.npm.taobao.org/jsonpointer/download/jsonpointer-4.0.1.tgz", 928 | "integrity": "sha1-T9kss04OnbPInIYi7PUfm5eMbLk=", 929 | "dev": true 930 | }, 931 | "jsprim": { 932 | "version": "https://registry.npm.taobao.org/jsprim/download/jsprim-1.4.1.tgz", 933 | "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=", 934 | "requires": { 935 | "assert-plus": "https://registry.npm.taobao.org/assert-plus/download/assert-plus-1.0.0.tgz", 936 | "extsprintf": "https://registry.npm.taobao.org/extsprintf/download/extsprintf-1.3.0.tgz", 937 | "json-schema": "https://registry.npm.taobao.org/json-schema/download/json-schema-0.2.3.tgz", 938 | "verror": "https://registry.npm.taobao.org/verror/download/verror-1.10.0.tgz" 939 | } 940 | }, 941 | "kind-of": { 942 | "version": "https://registry.npm.taobao.org/kind-of/download/kind-of-3.2.2.tgz", 943 | "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", 944 | "dev": true, 945 | "requires": { 946 | "is-buffer": "https://registry.npm.taobao.org/is-buffer/download/is-buffer-1.1.6.tgz" 947 | } 948 | }, 949 | "klaw": { 950 | "version": "https://registry.npm.taobao.org/klaw/download/klaw-1.3.1.tgz", 951 | "integrity": "sha1-QIhDO0azsbolnXh4XY6W9zugJDk=", 952 | "requires": { 953 | "graceful-fs": "https://registry.npm.taobao.org/graceful-fs/download/graceful-fs-4.1.11.tgz" 954 | } 955 | }, 956 | "lazy-cache": { 957 | "version": "https://registry.npm.taobao.org/lazy-cache/download/lazy-cache-1.0.4.tgz", 958 | "integrity": "sha1-odePw6UEdMuAhF07O24dpJpEbo4=", 959 | "dev": true, 960 | "optional": true 961 | }, 962 | "lcov-parse": { 963 | "version": "https://registry.npm.taobao.org/lcov-parse/download/lcov-parse-0.0.10.tgz", 964 | "integrity": "sha1-GwuP+ayceIklBYK3C3ExXZ2m2aM=", 965 | "dev": true 966 | }, 967 | "levn": { 968 | "version": "https://registry.npm.taobao.org/levn/download/levn-0.3.0.tgz", 969 | "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=", 970 | "requires": { 971 | "prelude-ls": "https://registry.npm.taobao.org/prelude-ls/download/prelude-ls-1.1.2.tgz", 972 | "type-check": "https://registry.npm.taobao.org/type-check/download/type-check-0.3.2.tgz" 973 | } 974 | }, 975 | "lodash": { 976 | "version": "https://registry.npmjs.org/lodash/-/lodash-3.10.1.tgz", 977 | "integrity": "sha1-W/Rejkm6QYnhfUgnid/RW9FAt7Y=" 978 | }, 979 | "log-driver": { 980 | "version": "https://registry.npm.taobao.org/log-driver/download/log-driver-1.2.5.tgz", 981 | "integrity": "sha1-euTsJXMC/XkNVXyxDJcQDYV7AFY=", 982 | "dev": true 983 | }, 984 | "longest": { 985 | "version": "https://registry.npm.taobao.org/longest/download/longest-1.0.1.tgz", 986 | "integrity": "sha1-MKCy2jj3N3DoKUoNIuZiXtd9AJc=", 987 | "dev": true 988 | }, 989 | "lru-cache": { 990 | "version": "https://registry.npm.taobao.org/lru-cache/download/lru-cache-2.7.3.tgz", 991 | "integrity": "sha1-bUUk6LlV+V1PW1iFHOId1y+06VI=", 992 | "dev": true 993 | }, 994 | "mime-db": { 995 | "version": "http://registry.npmjs.org/mime-db/-/mime-db-1.30.0.tgz", 996 | "integrity": "sha1-dMZD2i3Z1qRTmZY0ZbJtXKfXHwE=" 997 | }, 998 | "mime-types": { 999 | "version": "http://registry.npmjs.org/mime-types/-/mime-types-2.1.17.tgz", 1000 | "integrity": "sha1-Cdejk/A+mVp5+K+Fe3Cp4KsWVXo=", 1001 | "requires": { 1002 | "mime-db": "http://registry.npmjs.org/mime-db/-/mime-db-1.30.0.tgz" 1003 | } 1004 | }, 1005 | "minimatch": { 1006 | "version": "https://registry.npm.taobao.org/minimatch/download/minimatch-3.0.4.tgz", 1007 | "integrity": "sha1-UWbihkV/AzBgZL5Ul+jbsMPTIIM=", 1008 | "requires": { 1009 | "brace-expansion": "https://registry.npm.taobao.org/brace-expansion/download/brace-expansion-1.1.8.tgz" 1010 | } 1011 | }, 1012 | "minimist": { 1013 | "version": "https://registry.npm.taobao.org/minimist/download/minimist-1.2.0.tgz", 1014 | "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", 1015 | "dev": true 1016 | }, 1017 | "mkdirp": { 1018 | "version": "https://registry.npm.taobao.org/mkdirp/download/mkdirp-0.5.1.tgz", 1019 | "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", 1020 | "dev": true, 1021 | "requires": { 1022 | "minimist": "https://registry.npm.taobao.org/minimist/download/minimist-0.0.8.tgz" 1023 | }, 1024 | "dependencies": { 1025 | "minimist": { 1026 | "version": "https://registry.npm.taobao.org/minimist/download/minimist-0.0.8.tgz", 1027 | "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", 1028 | "dev": true 1029 | } 1030 | } 1031 | }, 1032 | "mocha": { 1033 | "version": "https://registry.npm.taobao.org/mocha/download/mocha-2.5.3.tgz", 1034 | "integrity": "sha1-FhvlvetJZ3HrmzV0UFC2IrWu/Fg=", 1035 | "dev": true, 1036 | "requires": { 1037 | "commander": "https://registry.npm.taobao.org/commander/download/commander-2.3.0.tgz", 1038 | "debug": "https://registry.npm.taobao.org/debug/download/debug-2.2.0.tgz", 1039 | "diff": "https://registry.npm.taobao.org/diff/download/diff-1.4.0.tgz", 1040 | "escape-string-regexp": "https://registry.npm.taobao.org/escape-string-regexp/download/escape-string-regexp-1.0.2.tgz", 1041 | "glob": "https://registry.npm.taobao.org/glob/download/glob-3.2.11.tgz", 1042 | "growl": "https://registry.npm.taobao.org/growl/download/growl-1.9.2.tgz", 1043 | "jade": "https://registry.npm.taobao.org/jade/download/jade-0.26.3.tgz", 1044 | "mkdirp": "https://registry.npm.taobao.org/mkdirp/download/mkdirp-0.5.1.tgz", 1045 | "supports-color": "https://registry.npm.taobao.org/supports-color/download/supports-color-1.2.0.tgz", 1046 | "to-iso-string": "https://registry.npm.taobao.org/to-iso-string/download/to-iso-string-0.0.2.tgz" 1047 | }, 1048 | "dependencies": { 1049 | "commander": { 1050 | "version": "https://registry.npm.taobao.org/commander/download/commander-2.3.0.tgz", 1051 | "integrity": "sha1-/UMOiJgy7DU7ms0d4hfBHLPu+HM=", 1052 | "dev": true 1053 | }, 1054 | "escape-string-regexp": { 1055 | "version": "https://registry.npm.taobao.org/escape-string-regexp/download/escape-string-regexp-1.0.2.tgz", 1056 | "integrity": "sha1-Tbwv5nTnGUnK8/smlc5/LcHZqNE=", 1057 | "dev": true 1058 | }, 1059 | "glob": { 1060 | "version": "https://registry.npm.taobao.org/glob/download/glob-3.2.11.tgz", 1061 | "integrity": "sha1-Spc/Y1uRkPcV0QmH1cAP0oFevj0=", 1062 | "dev": true, 1063 | "requires": { 1064 | "inherits": "https://registry.npm.taobao.org/inherits/download/inherits-2.0.3.tgz", 1065 | "minimatch": "https://registry.npm.taobao.org/minimatch/download/minimatch-0.3.0.tgz" 1066 | } 1067 | }, 1068 | "minimatch": { 1069 | "version": "https://registry.npm.taobao.org/minimatch/download/minimatch-0.3.0.tgz", 1070 | "integrity": "sha1-J12O2qxPG7MyZHIInnlJyDlGmd0=", 1071 | "dev": true, 1072 | "requires": { 1073 | "lru-cache": "https://registry.npm.taobao.org/lru-cache/download/lru-cache-2.7.3.tgz", 1074 | "sigmund": "https://registry.npm.taobao.org/sigmund/download/sigmund-1.0.1.tgz" 1075 | } 1076 | }, 1077 | "supports-color": { 1078 | "version": "https://registry.npm.taobao.org/supports-color/download/supports-color-1.2.0.tgz", 1079 | "integrity": "sha1-/x7R5hFp0Gs88tWI4YixjYhH4X4=", 1080 | "dev": true 1081 | } 1082 | } 1083 | }, 1084 | "ms": { 1085 | "version": "https://registry.npm.taobao.org/ms/download/ms-0.7.1.tgz", 1086 | "integrity": "sha1-nNE8A62/8ltl7/3nzoZO6VIBcJg=", 1087 | "dev": true 1088 | }, 1089 | "nopt": { 1090 | "version": "https://registry.npm.taobao.org/nopt/download/nopt-3.0.6.tgz", 1091 | "integrity": "sha1-xkZdvwirzU2zWTF/eaxopkayj/k=", 1092 | "dev": true, 1093 | "requires": { 1094 | "abbrev": "https://registry.npm.taobao.org/abbrev/download/abbrev-1.0.9.tgz" 1095 | } 1096 | }, 1097 | "nth-check": { 1098 | "version": "https://registry.npm.taobao.org/nth-check/download/nth-check-1.0.1.tgz", 1099 | "integrity": "sha1-mSms32KPwsQQmN6rgqxYDPFJquQ=", 1100 | "requires": { 1101 | "boolbase": "https://registry.npm.taobao.org/boolbase/download/boolbase-1.0.0.tgz" 1102 | } 1103 | }, 1104 | "nwmatcher": { 1105 | "version": "https://registry.npm.taobao.org/nwmatcher/download/nwmatcher-1.4.3.tgz", 1106 | "integrity": "sha1-ZDSOOz2A8DW0CsEVY9J4+LctuJw=" 1107 | }, 1108 | "oauth-sign": { 1109 | "version": "https://registry.npm.taobao.org/oauth-sign/download/oauth-sign-0.8.2.tgz", 1110 | "integrity": "sha1-Rqarfwrq2N6unsBWV4C31O/rnUM=" 1111 | }, 1112 | "once": { 1113 | "version": "https://registry.npm.taobao.org/once/download/once-1.4.0.tgz", 1114 | "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", 1115 | "requires": { 1116 | "wrappy": "https://registry.npm.taobao.org/wrappy/download/wrappy-1.0.2.tgz" 1117 | } 1118 | }, 1119 | "optimist": { 1120 | "version": "https://registry.npm.taobao.org/optimist/download/optimist-0.6.1.tgz", 1121 | "integrity": "sha1-2j6nRob6IaGaERwybpDrFaAZZoY=", 1122 | "dev": true, 1123 | "requires": { 1124 | "minimist": "https://registry.npm.taobao.org/minimist/download/minimist-0.0.10.tgz", 1125 | "wordwrap": "https://registry.npm.taobao.org/wordwrap/download/wordwrap-0.0.3.tgz" 1126 | }, 1127 | "dependencies": { 1128 | "minimist": { 1129 | "version": "https://registry.npm.taobao.org/minimist/download/minimist-0.0.10.tgz", 1130 | "integrity": "sha1-3j+YVD2/lggr5IrRoMfNqDYwHc8=", 1131 | "dev": true 1132 | }, 1133 | "wordwrap": { 1134 | "version": "https://registry.npm.taobao.org/wordwrap/download/wordwrap-0.0.3.tgz", 1135 | "integrity": "sha1-o9XabNXAvAAI03I0u68b7WMFkQc=", 1136 | "dev": true 1137 | } 1138 | } 1139 | }, 1140 | "optionator": { 1141 | "version": "https://registry.npm.taobao.org/optionator/download/optionator-0.8.2.tgz", 1142 | "integrity": "sha1-NkxeQJ0/TWMB1sC0wFu6UBgK62Q=", 1143 | "requires": { 1144 | "deep-is": "https://registry.npm.taobao.org/deep-is/download/deep-is-0.1.3.tgz", 1145 | "fast-levenshtein": "https://registry.npm.taobao.org/fast-levenshtein/download/fast-levenshtein-2.0.6.tgz", 1146 | "levn": "https://registry.npm.taobao.org/levn/download/levn-0.3.0.tgz", 1147 | "prelude-ls": "https://registry.npm.taobao.org/prelude-ls/download/prelude-ls-1.1.2.tgz", 1148 | "type-check": "https://registry.npm.taobao.org/type-check/download/type-check-0.3.2.tgz", 1149 | "wordwrap": "https://registry.npm.taobao.org/wordwrap/download/wordwrap-1.0.0.tgz" 1150 | } 1151 | }, 1152 | "parse5": { 1153 | "version": "http://registry.npmjs.org/parse5/-/parse5-1.5.1.tgz", 1154 | "integrity": "sha1-m387DeMr543CQBsXVzzK8Pb1nZQ=" 1155 | }, 1156 | "path": { 1157 | "version": "https://registry.npm.taobao.org/path/download/path-0.12.7.tgz", 1158 | "integrity": "sha1-1NwqUGxM4hl+tIHr/NWzbAFAsQ8=", 1159 | "requires": { 1160 | "process": "https://registry.npm.taobao.org/process/download/process-0.11.10.tgz", 1161 | "util": "https://registry.npm.taobao.org/util/download/util-0.10.3.tgz" 1162 | } 1163 | }, 1164 | "path-is-absolute": { 1165 | "version": "https://registry.npm.taobao.org/path-is-absolute/download/path-is-absolute-1.0.1.tgz", 1166 | "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=" 1167 | }, 1168 | "performance-now": { 1169 | "version": "https://registry.npm.taobao.org/performance-now/download/performance-now-2.1.0.tgz", 1170 | "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=" 1171 | }, 1172 | "pinkie": { 1173 | "version": "https://registry.npm.taobao.org/pinkie/download/pinkie-2.0.4.tgz", 1174 | "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=", 1175 | "dev": true 1176 | }, 1177 | "pinkie-promise": { 1178 | "version": "https://registry.npm.taobao.org/pinkie-promise/download/pinkie-promise-2.0.1.tgz", 1179 | "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", 1180 | "dev": true, 1181 | "requires": { 1182 | "pinkie": "https://registry.npm.taobao.org/pinkie/download/pinkie-2.0.4.tgz" 1183 | } 1184 | }, 1185 | "prelude-ls": { 1186 | "version": "https://registry.npm.taobao.org/prelude-ls/download/prelude-ls-1.1.2.tgz", 1187 | "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=" 1188 | }, 1189 | "process": { 1190 | "version": "https://registry.npm.taobao.org/process/download/process-0.11.10.tgz", 1191 | "integrity": "sha1-czIwDoQBYb2j5podHZGn1LwW8YI=" 1192 | }, 1193 | "punycode": { 1194 | "version": "https://registry.npm.taobao.org/punycode/download/punycode-1.4.1.tgz", 1195 | "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=" 1196 | }, 1197 | "qs": { 1198 | "version": "https://registry.npm.taobao.org/qs/download/qs-6.5.1.tgz", 1199 | "integrity": "sha1-NJzfbu+J7EXBLX1es/wMhwNDptg=" 1200 | }, 1201 | "readable-stream": { 1202 | "version": "https://registry.npm.taobao.org/readable-stream/download/readable-stream-1.1.14.tgz", 1203 | "integrity": "sha1-fPTFTvZI44EwhMY23SB54WbAgdk=", 1204 | "requires": { 1205 | "core-util-is": "https://registry.npm.taobao.org/core-util-is/download/core-util-is-1.0.2.tgz", 1206 | "inherits": "https://registry.npm.taobao.org/inherits/download/inherits-2.0.3.tgz", 1207 | "isarray": "https://registry.npm.taobao.org/isarray/download/isarray-0.0.1.tgz", 1208 | "string_decoder": "https://registry.npm.taobao.org/string_decoder/download/string_decoder-0.10.31.tgz" 1209 | } 1210 | }, 1211 | "repeat-string": { 1212 | "version": "https://registry.npm.taobao.org/repeat-string/download/repeat-string-1.6.1.tgz", 1213 | "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=", 1214 | "dev": true 1215 | }, 1216 | "request": { 1217 | "version": "https://registry.npm.taobao.org/request/download/request-2.83.0.tgz", 1218 | "integrity": "sha1-ygtl2gLtYpNYh4COb1EDgQNOM1Y=", 1219 | "requires": { 1220 | "aws-sign2": "https://registry.npm.taobao.org/aws-sign2/download/aws-sign2-0.7.0.tgz", 1221 | "aws4": "https://registry.npm.taobao.org/aws4/download/aws4-1.6.0.tgz", 1222 | "caseless": "https://registry.npm.taobao.org/caseless/download/caseless-0.12.0.tgz", 1223 | "combined-stream": "https://registry.npm.taobao.org/combined-stream/download/combined-stream-1.0.5.tgz", 1224 | "extend": "https://registry.npm.taobao.org/extend/download/extend-3.0.1.tgz", 1225 | "forever-agent": "https://registry.npm.taobao.org/forever-agent/download/forever-agent-0.6.1.tgz", 1226 | "form-data": "http://registry.npmjs.org/form-data/-/form-data-2.3.1.tgz", 1227 | "har-validator": "https://registry.npm.taobao.org/har-validator/download/har-validator-5.0.3.tgz", 1228 | "hawk": "https://registry.npm.taobao.org/hawk/download/hawk-6.0.2.tgz", 1229 | "http-signature": "https://registry.npm.taobao.org/http-signature/download/http-signature-1.2.0.tgz", 1230 | "is-typedarray": "https://registry.npm.taobao.org/is-typedarray/download/is-typedarray-1.0.0.tgz", 1231 | "isstream": "https://registry.npm.taobao.org/isstream/download/isstream-0.1.2.tgz", 1232 | "json-stringify-safe": "https://registry.npm.taobao.org/json-stringify-safe/download/json-stringify-safe-5.0.1.tgz", 1233 | "mime-types": "http://registry.npmjs.org/mime-types/-/mime-types-2.1.17.tgz", 1234 | "oauth-sign": "https://registry.npm.taobao.org/oauth-sign/download/oauth-sign-0.8.2.tgz", 1235 | "performance-now": "https://registry.npm.taobao.org/performance-now/download/performance-now-2.1.0.tgz", 1236 | "qs": "https://registry.npm.taobao.org/qs/download/qs-6.5.1.tgz", 1237 | "safe-buffer": "https://registry.npm.taobao.org/safe-buffer/download/safe-buffer-5.1.1.tgz", 1238 | "stringstream": "https://registry.npm.taobao.org/stringstream/download/stringstream-0.0.5.tgz", 1239 | "tough-cookie": "https://registry.npm.taobao.org/tough-cookie/download/tough-cookie-2.3.3.tgz", 1240 | "tunnel-agent": "https://registry.npm.taobao.org/tunnel-agent/download/tunnel-agent-0.6.0.tgz", 1241 | "uuid": "https://registry.npm.taobao.org/uuid/download/uuid-3.1.0.tgz" 1242 | } 1243 | }, 1244 | "resolve": { 1245 | "version": "https://registry.npm.taobao.org/resolve/download/resolve-1.1.7.tgz", 1246 | "integrity": "sha1-IDEU2CrSxe2ejgQRs5ModeiJ6Xs=", 1247 | "dev": true 1248 | }, 1249 | "right-align": { 1250 | "version": "https://registry.npm.taobao.org/right-align/download/right-align-0.1.3.tgz", 1251 | "integrity": "sha1-YTObci/mo1FWiSENJOFMlhSGE+8=", 1252 | "dev": true, 1253 | "optional": true, 1254 | "requires": { 1255 | "align-text": "https://registry.npm.taobao.org/align-text/download/align-text-0.1.4.tgz" 1256 | } 1257 | }, 1258 | "rimraf": { 1259 | "version": "http://registry.npmjs.org/rimraf/-/rimraf-2.6.2.tgz", 1260 | "integrity": "sha1-LtgVDSShbqhlHm1u8PR8QVjOejY=", 1261 | "requires": { 1262 | "glob": "https://registry.npm.taobao.org/glob/download/glob-7.1.2.tgz" 1263 | } 1264 | }, 1265 | "safe-buffer": { 1266 | "version": "https://registry.npm.taobao.org/safe-buffer/download/safe-buffer-5.1.1.tgz", 1267 | "integrity": "sha1-iTMSr2myEj3vcfV4iQAWce6yyFM=" 1268 | }, 1269 | "sax": { 1270 | "version": "https://registry.npm.taobao.org/sax/download/sax-1.2.4.tgz", 1271 | "integrity": "sha1-KBYjTiN4vdxOU1T6tcqold9xANk=" 1272 | }, 1273 | "should": { 1274 | "version": "https://registry.npm.taobao.org/should/download/should-7.1.1.tgz", 1275 | "integrity": "sha1-ZGTEi298Hh8YrASDV4+i3VXCxuA=", 1276 | "dev": true, 1277 | "requires": { 1278 | "should-equal": "https://registry.npm.taobao.org/should-equal/download/should-equal-0.5.0.tgz", 1279 | "should-format": "https://registry.npm.taobao.org/should-format/download/should-format-0.3.1.tgz", 1280 | "should-type": "https://registry.npm.taobao.org/should-type/download/should-type-0.2.0.tgz" 1281 | } 1282 | }, 1283 | "should-equal": { 1284 | "version": "https://registry.npm.taobao.org/should-equal/download/should-equal-0.5.0.tgz", 1285 | "integrity": "sha1-x5fxNfMGf+tp6+zbMGscP+IbPm8=", 1286 | "dev": true, 1287 | "requires": { 1288 | "should-type": "https://registry.npm.taobao.org/should-type/download/should-type-0.2.0.tgz" 1289 | } 1290 | }, 1291 | "should-format": { 1292 | "version": "https://registry.npm.taobao.org/should-format/download/should-format-0.3.1.tgz", 1293 | "integrity": "sha1-LLt4JGFnCs5CkrKx7EaNuM+Z4zA=", 1294 | "dev": true, 1295 | "requires": { 1296 | "should-type": "https://registry.npm.taobao.org/should-type/download/should-type-0.2.0.tgz" 1297 | } 1298 | }, 1299 | "should-type": { 1300 | "version": "https://registry.npm.taobao.org/should-type/download/should-type-0.2.0.tgz", 1301 | "integrity": "sha1-ZwfvlVKdmJ3MCY/gdTqx+RNrt/Y=", 1302 | "dev": true 1303 | }, 1304 | "sigmund": { 1305 | "version": "https://registry.npm.taobao.org/sigmund/download/sigmund-1.0.1.tgz", 1306 | "integrity": "sha1-P/IfGYytIXX587eBhT/ZTQ0ZtZA=", 1307 | "dev": true 1308 | }, 1309 | "sntp": { 1310 | "version": "https://registry.npm.taobao.org/sntp/download/sntp-2.1.0.tgz", 1311 | "integrity": "sha1-LGzsFP7cIiJznK+bXD2F0cxaLMg=", 1312 | "requires": { 1313 | "hoek": "https://registry.npm.taobao.org/hoek/download/hoek-4.2.0.tgz" 1314 | } 1315 | }, 1316 | "source-map": { 1317 | "version": "http://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", 1318 | "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", 1319 | "optional": true 1320 | }, 1321 | "sprintf-js": { 1322 | "version": "https://registry.npm.taobao.org/sprintf-js/download/sprintf-js-1.0.3.tgz", 1323 | "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=" 1324 | }, 1325 | "sshpk": { 1326 | "version": "https://registry.npm.taobao.org/sshpk/download/sshpk-1.13.1.tgz", 1327 | "integrity": "sha1-US322mKHFEMW3EwY/hzx2UBzm+M=", 1328 | "requires": { 1329 | "asn1": "https://registry.npm.taobao.org/asn1/download/asn1-0.2.3.tgz", 1330 | "assert-plus": "https://registry.npm.taobao.org/assert-plus/download/assert-plus-1.0.0.tgz", 1331 | "bcrypt-pbkdf": "https://registry.npm.taobao.org/bcrypt-pbkdf/download/bcrypt-pbkdf-1.0.1.tgz", 1332 | "dashdash": "https://registry.npm.taobao.org/dashdash/download/dashdash-1.14.1.tgz", 1333 | "ecc-jsbn": "https://registry.npm.taobao.org/ecc-jsbn/download/ecc-jsbn-0.1.1.tgz", 1334 | "getpass": "https://registry.npm.taobao.org/getpass/download/getpass-0.1.7.tgz", 1335 | "jsbn": "https://registry.npm.taobao.org/jsbn/download/jsbn-0.1.1.tgz", 1336 | "tweetnacl": "https://registry.npm.taobao.org/tweetnacl/download/tweetnacl-0.14.5.tgz" 1337 | } 1338 | }, 1339 | "string_decoder": { 1340 | "version": "https://registry.npm.taobao.org/string_decoder/download/string_decoder-0.10.31.tgz", 1341 | "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=" 1342 | }, 1343 | "stringstream": { 1344 | "version": "https://registry.npm.taobao.org/stringstream/download/stringstream-0.0.5.tgz", 1345 | "integrity": "sha1-TkhM1N5aC7vuGORjB3EKioFiGHg=" 1346 | }, 1347 | "strip-ansi": { 1348 | "version": "https://registry.npm.taobao.org/strip-ansi/download/strip-ansi-3.0.1.tgz", 1349 | "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", 1350 | "dev": true, 1351 | "requires": { 1352 | "ansi-regex": "https://registry.npm.taobao.org/ansi-regex/download/ansi-regex-2.1.1.tgz" 1353 | } 1354 | }, 1355 | "supports-color": { 1356 | "version": "https://registry.npm.taobao.org/supports-color/download/supports-color-2.0.0.tgz", 1357 | "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", 1358 | "dev": true 1359 | }, 1360 | "symbol-tree": { 1361 | "version": "http://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.2.tgz", 1362 | "integrity": "sha1-rifbOPZgp64uHDt9G8KQgZuFGeY=" 1363 | }, 1364 | "to-iso-string": { 1365 | "version": "https://registry.npm.taobao.org/to-iso-string/download/to-iso-string-0.0.2.tgz", 1366 | "integrity": "sha1-TcGeZk38y+Jb2NtQiwDG2hWCVdE=", 1367 | "dev": true 1368 | }, 1369 | "to-markdown": { 1370 | "version": "https://registry.npm.taobao.org/to-markdown/download/to-markdown-2.1.0.tgz", 1371 | "integrity": "sha1-+7syDoEo+p2+FZhCvXp7pUkaEf8=", 1372 | "requires": { 1373 | "collapse-whitespace": "https://registry.npm.taobao.org/collapse-whitespace/download/collapse-whitespace-1.1.2.tgz", 1374 | "jsdom": "https://registry.npm.taobao.org/jsdom/download/jsdom-8.5.0.tgz" 1375 | }, 1376 | "dependencies": { 1377 | "jsdom": { 1378 | "version": "https://registry.npm.taobao.org/jsdom/download/jsdom-8.5.0.tgz", 1379 | "integrity": "sha1-1Nj12/J2hjW2KmKCO5R89wcevJg=", 1380 | "requires": { 1381 | "abab": "https://registry.npm.taobao.org/abab/download/abab-1.0.4.tgz", 1382 | "acorn": "https://registry.npm.taobao.org/acorn/download/acorn-2.7.0.tgz", 1383 | "acorn-globals": "https://registry.npm.taobao.org/acorn-globals/download/acorn-globals-1.0.9.tgz", 1384 | "array-equal": "http://registry.npmjs.org/array-equal/-/array-equal-1.0.0.tgz", 1385 | "cssom": "http://registry.npmjs.org/cssom/-/cssom-0.3.2.tgz", 1386 | "cssstyle": "http://registry.npmjs.org/cssstyle/-/cssstyle-0.2.37.tgz", 1387 | "escodegen": "http://registry.npmjs.org/escodegen/-/escodegen-1.9.0.tgz", 1388 | "iconv-lite": "http://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.19.tgz", 1389 | "nwmatcher": "https://registry.npm.taobao.org/nwmatcher/download/nwmatcher-1.4.3.tgz", 1390 | "parse5": "http://registry.npmjs.org/parse5/-/parse5-1.5.1.tgz", 1391 | "request": "https://registry.npm.taobao.org/request/download/request-2.83.0.tgz", 1392 | "sax": "https://registry.npm.taobao.org/sax/download/sax-1.2.4.tgz", 1393 | "symbol-tree": "http://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.2.tgz", 1394 | "tough-cookie": "https://registry.npm.taobao.org/tough-cookie/download/tough-cookie-2.3.3.tgz", 1395 | "webidl-conversions": "http://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", 1396 | "whatwg-url": "https://registry.npm.taobao.org/whatwg-url/download/whatwg-url-2.0.1.tgz", 1397 | "xml-name-validator": "http://registry.npmjs.org/xml-name-validator/-/xml-name-validator-2.0.1.tgz" 1398 | } 1399 | }, 1400 | "webidl-conversions": { 1401 | "version": "http://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", 1402 | "integrity": "sha1-JFNCdeKnvGvnvIZhHMFq4KVlSHE=" 1403 | } 1404 | } 1405 | }, 1406 | "tough-cookie": { 1407 | "version": "https://registry.npm.taobao.org/tough-cookie/download/tough-cookie-2.3.3.tgz", 1408 | "integrity": "sha1-C2GKVWW23qkL80JdBNVe3EdadWE=", 1409 | "requires": { 1410 | "punycode": "https://registry.npm.taobao.org/punycode/download/punycode-1.4.1.tgz" 1411 | } 1412 | }, 1413 | "tr46": { 1414 | "version": "http://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", 1415 | "integrity": "sha1-gYT9NH2snNwYWZLzpmIuFLnZq2o=" 1416 | }, 1417 | "tunnel-agent": { 1418 | "version": "https://registry.npm.taobao.org/tunnel-agent/download/tunnel-agent-0.6.0.tgz", 1419 | "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", 1420 | "requires": { 1421 | "safe-buffer": "https://registry.npm.taobao.org/safe-buffer/download/safe-buffer-5.1.1.tgz" 1422 | } 1423 | }, 1424 | "tweetnacl": { 1425 | "version": "https://registry.npm.taobao.org/tweetnacl/download/tweetnacl-0.14.5.tgz", 1426 | "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=", 1427 | "optional": true 1428 | }, 1429 | "type-check": { 1430 | "version": "https://registry.npm.taobao.org/type-check/download/type-check-0.3.2.tgz", 1431 | "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=", 1432 | "requires": { 1433 | "prelude-ls": "https://registry.npm.taobao.org/prelude-ls/download/prelude-ls-1.1.2.tgz" 1434 | } 1435 | }, 1436 | "uglify-js": { 1437 | "version": "https://registry.npm.taobao.org/uglify-js/download/uglify-js-2.8.29.tgz", 1438 | "integrity": "sha1-KcVzMUgFe7Th913zW3qcty5qWd0=", 1439 | "dev": true, 1440 | "optional": true, 1441 | "requires": { 1442 | "source-map": "http://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", 1443 | "uglify-to-browserify": "https://registry.npm.taobao.org/uglify-to-browserify/download/uglify-to-browserify-1.0.2.tgz", 1444 | "yargs": "https://registry.npm.taobao.org/yargs/download/yargs-3.10.0.tgz" 1445 | } 1446 | }, 1447 | "uglify-to-browserify": { 1448 | "version": "https://registry.npm.taobao.org/uglify-to-browserify/download/uglify-to-browserify-1.0.2.tgz", 1449 | "integrity": "sha1-bgkk1r2mta/jSeOabWMoUKD4grc=", 1450 | "dev": true, 1451 | "optional": true 1452 | }, 1453 | "util": { 1454 | "version": "https://registry.npm.taobao.org/util/download/util-0.10.3.tgz", 1455 | "integrity": "sha1-evsa/lCAUkZInj23/g7TeTNqwPk=", 1456 | "requires": { 1457 | "inherits": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz" 1458 | }, 1459 | "dependencies": { 1460 | "inherits": { 1461 | "version": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", 1462 | "integrity": "sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE=" 1463 | } 1464 | } 1465 | }, 1466 | "uuid": { 1467 | "version": "https://registry.npm.taobao.org/uuid/download/uuid-3.1.0.tgz", 1468 | "integrity": "sha1-PdPT55Crwk17DToDT/q6vijrvAQ=" 1469 | }, 1470 | "verror": { 1471 | "version": "https://registry.npm.taobao.org/verror/download/verror-1.10.0.tgz", 1472 | "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=", 1473 | "requires": { 1474 | "assert-plus": "https://registry.npm.taobao.org/assert-plus/download/assert-plus-1.0.0.tgz", 1475 | "core-util-is": "https://registry.npm.taobao.org/core-util-is/download/core-util-is-1.0.2.tgz", 1476 | "extsprintf": "https://registry.npm.taobao.org/extsprintf/download/extsprintf-1.3.0.tgz" 1477 | } 1478 | }, 1479 | "void-elements": { 1480 | "version": "https://registry.npm.taobao.org/void-elements/download/void-elements-2.0.1.tgz", 1481 | "integrity": "sha1-wGavtYK7HLQSjWDqkjkulNXp2+w=" 1482 | }, 1483 | "webidl-conversions": { 1484 | "version": "https://registry.npm.taobao.org/webidl-conversions/download/webidl-conversions-2.0.1.tgz", 1485 | "integrity": "sha1-O/glj30xjHRDw28uFpQCoaZwNQY=", 1486 | "optional": true 1487 | }, 1488 | "whatwg-url": { 1489 | "version": "https://registry.npm.taobao.org/whatwg-url/download/whatwg-url-2.0.1.tgz", 1490 | "integrity": "sha1-U5ayBD8CDub3BNnEXqhRnnJN5lk=", 1491 | "requires": { 1492 | "tr46": "http://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", 1493 | "webidl-conversions": "http://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz" 1494 | }, 1495 | "dependencies": { 1496 | "webidl-conversions": { 1497 | "version": "http://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", 1498 | "integrity": "sha1-JFNCdeKnvGvnvIZhHMFq4KVlSHE=" 1499 | } 1500 | } 1501 | }, 1502 | "whatwg-url-compat": { 1503 | "version": "https://registry.npm.taobao.org/whatwg-url-compat/download/whatwg-url-compat-0.6.5.tgz", 1504 | "integrity": "sha1-AImBEa9om7CXVBzVpFymyHmERb8=", 1505 | "optional": true, 1506 | "requires": { 1507 | "tr46": "http://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz" 1508 | } 1509 | }, 1510 | "which": { 1511 | "version": "https://registry.npm.taobao.org/which/download/which-1.3.0.tgz", 1512 | "integrity": "sha1-/wS9/AEO5UfXgL7DjhrBwnd9JTo=", 1513 | "dev": true, 1514 | "requires": { 1515 | "isexe": "https://registry.npm.taobao.org/isexe/download/isexe-2.0.0.tgz" 1516 | } 1517 | }, 1518 | "window-size": { 1519 | "version": "https://registry.npm.taobao.org/window-size/download/window-size-0.1.0.tgz", 1520 | "integrity": "sha1-VDjNLqk7IC76Ohn+iIeu58lPnJ0=", 1521 | "dev": true, 1522 | "optional": true 1523 | }, 1524 | "wordwrap": { 1525 | "version": "https://registry.npm.taobao.org/wordwrap/download/wordwrap-1.0.0.tgz", 1526 | "integrity": "sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=" 1527 | }, 1528 | "wrappy": { 1529 | "version": "https://registry.npm.taobao.org/wrappy/download/wrappy-1.0.2.tgz", 1530 | "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" 1531 | }, 1532 | "xml-name-validator": { 1533 | "version": "http://registry.npmjs.org/xml-name-validator/-/xml-name-validator-2.0.1.tgz", 1534 | "integrity": "sha1-TYuPHszTQZqjYgYb7O9RXh5VljU=" 1535 | }, 1536 | "xtend": { 1537 | "version": "https://registry.npm.taobao.org/xtend/download/xtend-4.0.1.tgz", 1538 | "integrity": "sha1-pcbVMr5lbiPbgg77lDofBJmNY68=", 1539 | "dev": true 1540 | }, 1541 | "yargs": { 1542 | "version": "https://registry.npm.taobao.org/yargs/download/yargs-3.10.0.tgz", 1543 | "integrity": "sha1-9+572FfdfB0tOMDnTvvWgdFDH9E=", 1544 | "dev": true, 1545 | "optional": true, 1546 | "requires": { 1547 | "camelcase": "https://registry.npm.taobao.org/camelcase/download/camelcase-1.2.1.tgz", 1548 | "cliui": "https://registry.npm.taobao.org/cliui/download/cliui-2.1.0.tgz", 1549 | "decamelize": "https://registry.npm.taobao.org/decamelize/download/decamelize-1.2.0.tgz", 1550 | "window-size": "https://registry.npm.taobao.org/window-size/download/window-size-0.1.0.tgz" 1551 | } 1552 | } 1553 | } 1554 | } 1555 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "gitbook-summary", 3 | "version": "1.2.4", 4 | "description": "A CLI to generate a summary from a given folder.", 5 | "homepage": "http://imfly.github.io/gitbook-summary/", 6 | "bin": { 7 | "book": "./bin/summary.js" 8 | }, 9 | "scripts": { 10 | "start": "npm publish .", 11 | "test": "node_modules/.bin/mocha --reporter spec --timeout 15000", 12 | "cov": "node_modules/.bin/istanbul cover ./node_modules/mocha/bin/_mocha --report lcovonly -- -R spec && cat ./coverage/lcov.info | ./node_modules/coveralls/bin/coveralls.js && rm -rf ./coverage" 13 | }, 14 | "repository": { 15 | "type": "git", 16 | "url": "https://github.com/imfly/gitbook-summary.git" 17 | }, 18 | "keywords": [ 19 | "gitbook", 20 | "summary", 21 | "cli", 22 | "nodejs" 23 | ], 24 | "author": "imfly", 25 | "license": "MIT", 26 | "bugs": { 27 | "url": "https://github.com/imfly/sailsjs-docs-gitbook/issues" 28 | }, 29 | "engines": { 30 | "node": ">=4.0" 31 | }, 32 | "dependencies": { 33 | "async": "^1.5.0", 34 | "bash-color": "0.0.3", 35 | "cheerio": "^0.20.0", 36 | "commander": "^2.9.0", 37 | "front-matter": "^2.1.1", 38 | "fs-extra": "^0.26.2", 39 | "iconv-lite": "^0.4.13", 40 | "lodash": "^3.10.1", 41 | "path": "^0.12.7", 42 | "request": "^2.69.0", 43 | "to-markdown": "^3.1.1" 44 | }, 45 | "devDependencies": { 46 | "coveralls": "^2.11.4", 47 | "istanbul": "^0.4.0", 48 | "mocha": "^2.3.3", 49 | "should": "^7.1.1" 50 | } 51 | } 52 | -------------------------------------------------------------------------------- /test/bookJson.test.js: -------------------------------------------------------------------------------- 1 | var fs = require('fs-extra'); 2 | var path = require('path'); 3 | var should = require('should'); 4 | 5 | var config = require('../lib/bookJson'); 6 | 7 | describe('config.js', function () { 8 | it('should get book.title if `book.json` exists', function () { 9 | should(config('test/books/config-json').title).be.equal('json-config-name'); 10 | }); 11 | }); 12 | -------------------------------------------------------------------------------- /test/books/basic/README.md: -------------------------------------------------------------------------------- 1 | # Readme 2 | 3 | Default description for the book. 4 | -------------------------------------------------------------------------------- /test/books/basic/test/tt.md: -------------------------------------------------------------------------------- 1 | test 2 | -------------------------------------------------------------------------------- /test/books/config-json/README.md: -------------------------------------------------------------------------------- 1 | # Readme 2 | -------------------------------------------------------------------------------- /test/books/config-json/book.json: -------------------------------------------------------------------------------- 1 | { 2 | "title": "json-config-name", 3 | "outputfile": "test.md", 4 | "catalog": "all", 5 | "ignores": [], 6 | "unchanged": [] 7 | } 8 | -------------------------------------------------------------------------------- /test/books/config-json/first/README.md: -------------------------------------------------------------------------------- 1 | # Readme 2 | -------------------------------------------------------------------------------- /test/books/config-json/first/hello.md: -------------------------------------------------------------------------------- 1 | # Hello.md 2 | 3 | You can find this file in your `SUMMARY.md` -------------------------------------------------------------------------------- /test/books/config-json/second/tt.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/imfly/gitbook-summary/80d665a4b26f0a765e41878a03b26d84416b1cd6/test/books/config-json/second/tt.md -------------------------------------------------------------------------------- /test/books/config-json/world.txt: -------------------------------------------------------------------------------- 1 | # world.txt 2 | 3 | You can`t find all files whose filename extension is not `.md` like this in your `SUMMARY.md` -------------------------------------------------------------------------------- /test/files.test.js: -------------------------------------------------------------------------------- 1 | var should = require('should'); 2 | var sort = require('../lib/files').sort; 3 | 4 | describe('files.js', function () { 5 | var DirClass = function(name) { 6 | this.name = name; 7 | this.isDirectory = true; 8 | }; 9 | 10 | it('test sort with alphabet', function () { 11 | var order = [new DirClass('01-a'), new DirClass('02-a'), new DirClass('03a-a'), new DirClass('03-a'), new DirClass('04-a')]; 12 | var sorted = order.sort(function(current, next) { 13 | return sort(current, next, '-'); 14 | }); 15 | 16 | should.deepEqual(sorted, 17 | [new DirClass('01-a'), new DirClass('02-a'), new DirClass('03-a'), new DirClass('03a-a'), new DirClass('04-a')]); 18 | }); 19 | 20 | it('test sort only digit', function () { 21 | var order = [new DirClass('01-a'), new DirClass('2-a'), new DirClass('7-a'), new DirClass('10-a'), new DirClass('04-a')]; 22 | var sorted = order.sort(function(current, next) { 23 | return sort(current, next, '-'); 24 | }); 25 | 26 | should.deepEqual(sorted, 27 | [new DirClass('01-a'), new DirClass('2-a'), new DirClass('04-a'), new DirClass('7-a'), new DirClass('10-a')]); 28 | }); 29 | }); 30 | -------------------------------------------------------------------------------- /test/html2md/test.html: -------------------------------------------------------------------------------- 1 |
hello world!
2 | 3 |
6 | var fs = require('fs');
7 |
8 |
--------------------------------------------------------------------------------
/test/html2md/test.md:
--------------------------------------------------------------------------------
1 | hello world!
2 |
3 | ## this is a head
4 |
5 | `var fs = require('fs');`
--------------------------------------------------------------------------------
/test/index.test.js:
--------------------------------------------------------------------------------
1 | var path = require('path');
2 | var fs = require('fs-extra');
3 | var should = require('should');
4 |
5 | var summary = require('../lib/summary').summary;
6 | var isNonAscii = require('../lib/summary').isNonAscii;
7 | var config = require('../lib/bookJson');
8 |
9 | describe('summary/index.js', function() {
10 | describe('#summary()', function() {
11 | after(function(done) {
12 | var file = path.resolve('SUMMARY.md');
13 | fs.remove(file, done);
14 | });
15 |
16 | it('should get a `SUMMARY.md` for `.` if has no options, for example: book sm', function() {
17 | summary({});
18 |
19 | // Fixme why can`t pass it using sync?
20 | // should(fs.existsSync(path.join(bookRoot, 'SUMMARY.md'))).be.ok();
21 | fs.exists(path.resolve('SUMMARY.md'), function(exist) {
22 | should(exist).be.ok();
23 | });
24 | });
25 | });
26 |
27 | // command line
28 | describe('#summary()', function() {
29 | var bookRoot;
30 |
31 | beforeEach(function() {
32 | bookRoot = path.resolve('test/books/basic');
33 | });
34 |
35 | afterEach(function(done) {
36 | var file = path.resolve(bookRoot, 'SUMMARY.md');
37 | fs.remove(file, done);
38 | });
39 |
40 | describe('should get a `SUMMARY.md`', function() {
41 |
42 | it('given an option root, for example: book sm -r root', function() {
43 | summary({
44 | root: bookRoot
45 | });
46 |
47 | // should(fs.existsSync(path.join(bookRoot, 'SUMMARY.md'))).be.ok();
48 | fs.exists(path.resolve(bookRoot, 'SUMMARY.md'), function(exist) {
49 | exist.should.be.ok();
50 | });
51 | });
52 |
53 | it('given an option title, for example: book sm -t title', function() {
54 | var title = 'This is a test book';
55 | summary({
56 | root: bookRoot,
57 | title: title
58 | });
59 |
60 | var summaryFile = path.resolve(bookRoot, 'SUMMARY.md');
61 | fs.readFile(summaryFile, 'utf8', function(err, content) {
62 | if (err) {
63 | console.log(err);
64 | }
65 | content.should.containEql('# This is a test book\n\n');
66 | content.should.containEql('- Test');
67 | });
68 | });
69 |
70 | it('given an option ignores, for example: book sm -i test', function() {
71 | var title = 'This book has no test';
72 | summary({
73 | root: bookRoot,
74 | title: title,
75 | ignores: ['test']
76 | });
77 |
78 | var summaryFile = path.resolve(bookRoot, 'SUMMARY.md');
79 | fs.readFile(summaryFile, 'utf8', function(err, content) {
80 | if (err) {
81 | console.log(err);
82 | }
83 | content.should.be.equal('# This book has no test\n\n');
84 | });
85 | });
86 | });
87 | });
88 |
89 | // has `book.json`
90 | describe('#summary()', function() {
91 | var bookRoot;
92 |
93 | before(function() {
94 | bookRoot = path.resolve('test/books/config-json');
95 | });
96 |
97 | after(function(done) {
98 | var file = path.resolve(bookRoot, config(bookRoot).outputfile);
99 | fs.remove(file, done);
100 | });
101 |
102 | it('should get a `SUMMARY.md` if given a `book.json`', function() {
103 | summary({
104 | root: bookRoot
105 | });
106 |
107 | var su = path.resolve(bookRoot, config(bookRoot).outputfile);
108 |
109 | fs.exists(su, function(err, exist) {
110 | if (err) {
111 | console.log(err);
112 | }
113 |
114 | // fixme
115 | // exist.should.be.ok();
116 |
117 | fs.readFile(su, 'utf8', function(err, content) {
118 | if (err) {
119 | console.log(err);
120 | }
121 |
122 | content.should.containEql('# json-config-name\n\n');
123 | content.should.containEql('- Second\n');
124 | });
125 | });
126 | });
127 | });
128 |
129 | it('test non-ascii', function() {
130 | should(isNonAscii('111Ab')).be.false();
131 | should(isNonAscii('111Abㅁ')).be.true();
132 | });
133 | });
134 |
--------------------------------------------------------------------------------
/test/language/test.md:
--------------------------------------------------------------------------------
1 | # 串行
2 |
3 | ## 三极管
4 |
--------------------------------------------------------------------------------
/yarn.lock:
--------------------------------------------------------------------------------
1 | # THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.
2 | # yarn lockfile v1
3 |
4 |
5 | abab@^1.0.0, abab@^1.0.3:
6 | version "1.0.4"
7 | resolved "https://registry.npmjs.org/abab/-/abab-1.0.4.tgz#5faad9c2c07f60dd76770f71cf025b62a63cfd4e"
8 | integrity sha1-X6rZwsB/YN12dw9xzwJbYqY8/U4=
9 |
10 | abbrev@1:
11 | version "1.1.1"
12 | resolved "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz#f8f2c887ad10bf67f634f005b6987fed3179aac8"
13 | integrity sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==
14 |
15 | abbrev@1.0.x:
16 | version "1.0.9"
17 | resolved "https://registry.npmjs.org/abbrev/-/abbrev-1.0.9.tgz#91b4792588a7738c25f35dd6f63752a2f8776135"
18 | integrity sha1-kbR5JYinc4wl813W9jdSovh3YTU=
19 |
20 | acorn-globals@^1.0.4:
21 | version "1.0.9"
22 | resolved "https://registry.npmjs.org/acorn-globals/-/acorn-globals-1.0.9.tgz#55bb5e98691507b74579d0513413217c380c54cf"
23 | integrity sha1-VbtemGkVB7dFedBRNBMhfDgMVM8=
24 | dependencies:
25 | acorn "^2.1.0"
26 |
27 | acorn-globals@^3.1.0:
28 | version "3.1.0"
29 | resolved "https://registry.npmjs.org/acorn-globals/-/acorn-globals-3.1.0.tgz#fd8270f71fbb4996b004fa880ee5d46573a731bf"
30 | integrity sha1-/YJw9x+7SZawBPqIDuXUZXOnMb8=
31 | dependencies:
32 | acorn "^4.0.4"
33 |
34 | acorn@^2.1.0, acorn@^2.4.0:
35 | version "2.7.0"
36 | resolved "https://registry.npmjs.org/acorn/-/acorn-2.7.0.tgz#ab6e7d9d886aaca8b085bc3312b79a198433f0e7"
37 | integrity sha1-q259nYhqrKiwhbwzEreaGYQz8Oc=
38 |
39 | acorn@^4.0.4:
40 | version "4.0.13"
41 | resolved "https://registry.npmjs.org/acorn/-/acorn-4.0.13.tgz#105495ae5361d697bd195c825192e1ad7f253787"
42 | integrity sha1-EFSVrlNh1pe9GVyCUZLhrX8lN4c=
43 |
44 | ajv@^6.12.3:
45 | version "6.12.6"
46 | resolved "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4"
47 | integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==
48 | dependencies:
49 | fast-deep-equal "^3.1.1"
50 | fast-json-stable-stringify "^2.0.0"
51 | json-schema-traverse "^0.4.1"
52 | uri-js "^4.2.2"
53 |
54 | amdefine@>=0.0.4:
55 | version "1.0.1"
56 | resolved "https://registry.npmjs.org/amdefine/-/amdefine-1.0.1.tgz#4a5282ac164729e93619bcfd3ad151f817ce91f5"
57 | integrity sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU=
58 |
59 | ansi-regex@^2.0.0:
60 | version "2.1.1"
61 | resolved "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df"
62 | integrity sha1-w7M6te42DYbg5ijwRorn7yfWVN8=
63 |
64 | ansi-styles@^2.2.1:
65 | version "2.2.1"
66 | resolved "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz#b432dd3358b634cf75e1e4664368240533c1ddbe"
67 | integrity sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=
68 |
69 | argparse@^1.0.7:
70 | version "1.0.10"
71 | resolved "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911"
72 | integrity sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==
73 | dependencies:
74 | sprintf-js "~1.0.2"
75 |
76 | array-equal@^1.0.0:
77 | version "1.0.0"
78 | resolved "https://registry.npmjs.org/array-equal/-/array-equal-1.0.0.tgz#8c2a5ef2472fd9ea742b04c77a75093ba2757c93"
79 | integrity sha1-jCpe8kcv2ep0KwTHenUJO6J1fJM=
80 |
81 | asn1@~0.2.3:
82 | version "0.2.6"
83 | resolved "https://registry.npmjs.org/asn1/-/asn1-0.2.6.tgz#0d3a7bb6e64e02a90c0303b31f292868ea09a08d"
84 | integrity sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ==
85 | dependencies:
86 | safer-buffer "~2.1.0"
87 |
88 | assert-plus@1.0.0, assert-plus@^1.0.0:
89 | version "1.0.0"
90 | resolved "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz#f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525"
91 | integrity sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=
92 |
93 | assert-plus@^0.2.0:
94 | version "0.2.0"
95 | resolved "https://registry.npmjs.org/assert-plus/-/assert-plus-0.2.0.tgz#d74e1b87e7affc0db8aadb7021f3fe48101ab234"
96 | integrity sha1-104bh+ev/A24qttwIfP+SBAasjQ=
97 |
98 | async@1.x, async@^1.5.0:
99 | version "1.5.2"
100 | resolved "https://registry.npmjs.org/async/-/async-1.5.2.tgz#ec6a61ae56480c0c3cb241c95618e20892f9672a"
101 | integrity sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo=
102 |
103 | asynckit@^0.4.0:
104 | version "0.4.0"
105 | resolved "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79"
106 | integrity sha1-x57Zf380y48robyXkLzDZkdLS3k=
107 |
108 | aws-sign2@~0.6.0:
109 | version "0.6.0"
110 | resolved "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.6.0.tgz#14342dd38dbcc94d0e5b87d763cd63612c0e794f"
111 | integrity sha1-FDQt0428yU0OW4fXY81jYSwOeU8=
112 |
113 | aws-sign2@~0.7.0:
114 | version "0.7.0"
115 | resolved "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz#b46e890934a9591f2d2f6f86d7e6a9f1b3fe76a8"
116 | integrity sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=
117 |
118 | aws4@^1.2.1, aws4@^1.8.0:
119 | version "1.11.0"
120 | resolved "https://registry.npmjs.org/aws4/-/aws4-1.11.0.tgz#d61f46d83b2519250e2784daf5b09479a8b41c59"
121 | integrity sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA==
122 |
123 | balanced-match@^1.0.0:
124 | version "1.0.2"
125 | resolved "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee"
126 | integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==
127 |
128 | bash-color@0.0.3:
129 | version "0.0.3"
130 | resolved "https://registry.npmjs.org/bash-color/-/bash-color-0.0.3.tgz#0c08921ec01393ab56ea444f0825e5493ca0e6a2"
131 | integrity sha1-DAiSHsATk6tW6kRPCCXlSTyg5qI=
132 |
133 | bcrypt-pbkdf@^1.0.0:
134 | version "1.0.2"
135 | resolved "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz#a4301d389b6a43f9b67ff3ca11a3f6637e360e9e"
136 | integrity sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=
137 | dependencies:
138 | tweetnacl "^0.14.3"
139 |
140 | block-elements@^1.0.0:
141 | version "1.2.0"
142 | resolved "https://registry.npmjs.org/block-elements/-/block-elements-1.2.0.tgz#8e04ccab638c7e2596f5065fb6c1c7518c905a5d"
143 | integrity sha1-jgTMq2OMfiWW9QZftsHHUYyQWl0=
144 |
145 | boolbase@~1.0.0:
146 | version "1.0.0"
147 | resolved "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz#68dff5fbe60c51eb37725ea9e3ed310dcc1e776e"
148 | integrity sha1-aN/1++YMUes3cl6p4+0xDcwed24=
149 |
150 | boom@2.x.x:
151 | version "2.10.1"
152 | resolved "https://registry.npmjs.org/boom/-/boom-2.10.1.tgz#39c8918ceff5799f83f9492a848f625add0c766f"
153 | integrity sha1-OciRjO/1eZ+D+UkqhI9iWt0Mdm8=
154 | dependencies:
155 | hoek "2.x.x"
156 |
157 | brace-expansion@^1.1.7:
158 | version "1.1.11"
159 | resolved "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd"
160 | integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==
161 | dependencies:
162 | balanced-match "^1.0.0"
163 | concat-map "0.0.1"
164 |
165 | caseless@~0.11.0:
166 | version "0.11.0"
167 | resolved "https://registry.npmjs.org/caseless/-/caseless-0.11.0.tgz#715b96ea9841593cc33067923f5ec60ebda4f7d7"
168 | integrity sha1-cVuW6phBWTzDMGeSP17GDr2k99c=
169 |
170 | caseless@~0.12.0:
171 | version "0.12.0"
172 | resolved "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc"
173 | integrity sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=
174 |
175 | chalk@^1.1.1:
176 | version "1.1.3"
177 | resolved "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98"
178 | integrity sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=
179 | dependencies:
180 | ansi-styles "^2.2.1"
181 | escape-string-regexp "^1.0.2"
182 | has-ansi "^2.0.0"
183 | strip-ansi "^3.0.0"
184 | supports-color "^2.0.0"
185 |
186 | cheerio@^0.20.0:
187 | version "0.20.0"
188 | resolved "https://registry.npmjs.org/cheerio/-/cheerio-0.20.0.tgz#5c710f2bab95653272842ba01c6ea61b3545ec35"
189 | integrity sha1-XHEPK6uVZTJyhCugHG6mGzVF7DU=
190 | dependencies:
191 | css-select "~1.2.0"
192 | dom-serializer "~0.1.0"
193 | entities "~1.1.1"
194 | htmlparser2 "~3.8.1"
195 | lodash "^4.1.0"
196 | optionalDependencies:
197 | jsdom "^7.0.2"
198 |
199 | collapse-whitespace@1.1.2:
200 | version "1.1.2"
201 | resolved "https://registry.npmjs.org/collapse-whitespace/-/collapse-whitespace-1.1.2.tgz#b9b31d79d5594ee3c22c15819c54828e565b3085"
202 | integrity sha1-ubMdedVZTuPCLBWBnFSCjlZbMIU=
203 | dependencies:
204 | block-elements "^1.0.0"
205 | void-elements "^2.0.1"
206 |
207 | combined-stream@^1.0.5, combined-stream@^1.0.6, combined-stream@~1.0.5, combined-stream@~1.0.6:
208 | version "1.0.8"
209 | resolved "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f"
210 | integrity sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==
211 | dependencies:
212 | delayed-stream "~1.0.0"
213 |
214 | commander@0.6.1:
215 | version "0.6.1"
216 | resolved "https://registry.npmjs.org/commander/-/commander-0.6.1.tgz#fa68a14f6a945d54dbbe50d8cdb3320e9e3b1a06"
217 | integrity sha1-+mihT2qUXVTbvlDYzbMyDp47GgY=
218 |
219 | commander@2.3.0:
220 | version "2.3.0"
221 | resolved "https://registry.npmjs.org/commander/-/commander-2.3.0.tgz#fd430e889832ec353b9acd1de217c11cb3eef873"
222 | integrity sha1-/UMOiJgy7DU7ms0d4hfBHLPu+HM=
223 |
224 | commander@^2.9.0:
225 | version "2.20.3"
226 | resolved "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33"
227 | integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==
228 |
229 | concat-map@0.0.1:
230 | version "0.0.1"
231 | resolved "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b"
232 | integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=
233 |
234 | content-type-parser@^1.0.1:
235 | version "1.0.2"
236 | resolved "https://registry.npmjs.org/content-type-parser/-/content-type-parser-1.0.2.tgz#caabe80623e63638b2502fd4c7f12ff4ce2352e7"
237 | integrity sha512-lM4l4CnMEwOLHAHr/P6MEZwZFPJFtAAKgL6pogbXmVZggIqXhdB6RbBtPOTsw2FcXwYhehRGERJmRrjOiIB8pQ==
238 |
239 | core-util-is@1.0.2:
240 | version "1.0.2"
241 | resolved "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7"
242 | integrity sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=
243 |
244 | core-util-is@~1.0.0:
245 | version "1.0.3"
246 | resolved "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz#a6042d3634c2b27e9328f837b965fac83808db85"
247 | integrity sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==
248 |
249 | coveralls@^2.11.4:
250 | version "2.13.3"
251 | resolved "https://registry.npmjs.org/coveralls/-/coveralls-2.13.3.tgz#9ad7c2ae527417f361e8b626483f48ee92dd2bc7"
252 | integrity sha512-iiAmn+l1XqRwNLXhW8Rs5qHZRFMYp9ZIPjEOVRpC/c4so6Y/f4/lFi0FfR5B9cCqgyhkJ5cZmbvcVRfP8MHchw==
253 | dependencies:
254 | js-yaml "3.6.1"
255 | lcov-parse "0.0.10"
256 | log-driver "1.2.5"
257 | minimist "1.2.0"
258 | request "2.79.0"
259 |
260 | cryptiles@2.x.x:
261 | version "2.0.5"
262 | resolved "https://registry.npmjs.org/cryptiles/-/cryptiles-2.0.5.tgz#3bdfecdc608147c1c67202fa291e7dca59eaa3b8"
263 | integrity sha1-O9/s3GCBR8HGcgL6KR59ylnqo7g=
264 | dependencies:
265 | boom "2.x.x"
266 |
267 | css-select@~1.2.0:
268 | version "1.2.0"
269 | resolved "https://registry.npmjs.org/css-select/-/css-select-1.2.0.tgz#2b3a110539c5355f1cd8d314623e870b121ec858"
270 | integrity sha1-KzoRBTnFNV8c2NMUYj6HCxIeyFg=
271 | dependencies:
272 | boolbase "~1.0.0"
273 | css-what "2.1"
274 | domutils "1.5.1"
275 | nth-check "~1.0.1"
276 |
277 | css-what@2.1:
278 | version "2.1.3"
279 | resolved "https://registry.npmjs.org/css-what/-/css-what-2.1.3.tgz#a6d7604573365fe74686c3f311c56513d88285f2"
280 | integrity sha512-a+EPoD+uZiNfh+5fxw2nO9QwFa6nJe2Or35fGY6Ipw1R3R4AGz1d1TEZrCegvw2YTmZ0jXirGYlzxxpYSHwpEg==
281 |
282 | cssom@0.3.x, "cssom@>= 0.3.0 < 0.4.0", "cssom@>= 0.3.2 < 0.4.0":
283 | version "0.3.8"
284 | resolved "https://registry.npmjs.org/cssom/-/cssom-0.3.8.tgz#9f1276f5b2b463f2114d3f2c75250af8c1a36f4a"
285 | integrity sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==
286 |
287 | "cssstyle@>= 0.2.29 < 0.3.0", "cssstyle@>= 0.2.37 < 0.3.0":
288 | version "0.2.37"
289 | resolved "https://registry.npmjs.org/cssstyle/-/cssstyle-0.2.37.tgz#541097234cb2513c83ceed3acddc27ff27987d54"
290 | integrity sha1-VBCXI0yyUTyDzu06zdwn/yeYfVQ=
291 | dependencies:
292 | cssom "0.3.x"
293 |
294 | dashdash@^1.12.0:
295 | version "1.14.1"
296 | resolved "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz#853cfa0f7cbe2fed5de20326b8dd581035f6e2f0"
297 | integrity sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=
298 | dependencies:
299 | assert-plus "^1.0.0"
300 |
301 | debug@2.2.0:
302 | version "2.2.0"
303 | resolved "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz#f87057e995b1a1f6ae6a4960664137bc56f039da"
304 | integrity sha1-+HBX6ZWxofauaklgZkE3vFbwOdo=
305 | dependencies:
306 | ms "0.7.1"
307 |
308 | deep-is@~0.1.3:
309 | version "0.1.4"
310 | resolved "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz#a6f2dce612fadd2ef1f519b73551f17e85199831"
311 | integrity sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==
312 |
313 | delayed-stream@~1.0.0:
314 | version "1.0.0"
315 | resolved "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619"
316 | integrity sha1-3zrhmayt+31ECqrgsp4icrJOxhk=
317 |
318 | diff@1.4.0:
319 | version "1.4.0"
320 | resolved "https://registry.npmjs.org/diff/-/diff-1.4.0.tgz#7f28d2eb9ee7b15a97efd89ce63dcfdaa3ccbabf"
321 | integrity sha1-fyjS657nsVqX79ic5j3P2qPMur8=
322 |
323 | dom-serializer@0:
324 | version "0.2.2"
325 | resolved "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.2.2.tgz#1afb81f533717175d478655debc5e332d9f9bb51"
326 | integrity sha512-2/xPb3ORsQ42nHYiSunXkDjPLBaEj/xTwUO4B7XCZQTRk7EBtTOPaygh10YAAh2OI1Qrp6NWfpAhzswj0ydt9g==
327 | dependencies:
328 | domelementtype "^2.0.1"
329 | entities "^2.0.0"
330 |
331 | dom-serializer@~0.1.0:
332 | version "0.1.1"
333 | resolved "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.1.1.tgz#1ec4059e284babed36eec2941d4a970a189ce7c0"
334 | integrity sha512-l0IU0pPzLWSHBcieZbpOKgkIn3ts3vAh7ZuFyXNwJxJXk/c4Gwj9xaTJwIDVQCXawWD0qb3IzMGH5rglQaO0XA==
335 | dependencies:
336 | domelementtype "^1.3.0"
337 | entities "^1.1.1"
338 |
339 | domelementtype@1, domelementtype@^1.3.0:
340 | version "1.3.1"
341 | resolved "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.1.tgz#d048c44b37b0d10a7f2a3d5fee3f4333d790481f"
342 | integrity sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w==
343 |
344 | domelementtype@^2.0.1:
345 | version "2.2.0"
346 | resolved "https://registry.npmjs.org/domelementtype/-/domelementtype-2.2.0.tgz#9a0b6c2782ed6a1c7323d42267183df9bd8b1d57"
347 | integrity sha512-DtBMo82pv1dFtUmHyr48beiuq792Sxohr+8Hm9zoxklYPfa6n0Z3Byjj2IV7bmr2IyqClnqEQhfgHJJ5QF0R5A==
348 |
349 | domhandler@2.3:
350 | version "2.3.0"
351 | resolved "https://registry.npmjs.org/domhandler/-/domhandler-2.3.0.tgz#2de59a0822d5027fabff6f032c2b25a2a8abe738"
352 | integrity sha1-LeWaCCLVAn+r/28DLCsloqir5zg=
353 | dependencies:
354 | domelementtype "1"
355 |
356 | domutils@1.5, domutils@1.5.1:
357 | version "1.5.1"
358 | resolved "https://registry.npmjs.org/domutils/-/domutils-1.5.1.tgz#dcd8488a26f563d61079e48c9f7b7e32373682cf"
359 | integrity sha1-3NhIiib1Y9YQeeSMn3t+Mjc2gs8=
360 | dependencies:
361 | dom-serializer "0"
362 | domelementtype "1"
363 |
364 | ecc-jsbn@~0.1.1:
365 | version "0.1.2"
366 | resolved "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz#3a83a904e54353287874c564b7549386849a98c9"
367 | integrity sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=
368 | dependencies:
369 | jsbn "~0.1.0"
370 | safer-buffer "^2.1.0"
371 |
372 | entities@1.0:
373 | version "1.0.0"
374 | resolved "https://registry.npmjs.org/entities/-/entities-1.0.0.tgz#b2987aa3821347fcde642b24fdfc9e4fb712bf26"
375 | integrity sha1-sph6o4ITR/zeZCsk/fyeT7cSvyY=
376 |
377 | entities@^1.1.1, entities@~1.1.1:
378 | version "1.1.2"
379 | resolved "https://registry.npmjs.org/entities/-/entities-1.1.2.tgz#bdfa735299664dfafd34529ed4f8522a275fea56"
380 | integrity sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w==
381 |
382 | entities@^2.0.0:
383 | version "2.2.0"
384 | resolved "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz#098dc90ebb83d8dffa089d55256b351d34c4da55"
385 | integrity sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==
386 |
387 | escape-string-regexp@1.0.2:
388 | version "1.0.2"
389 | resolved "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.2.tgz#4dbc2fe674e71949caf3fb2695ce7f2dc1d9a8d1"
390 | integrity sha1-Tbwv5nTnGUnK8/smlc5/LcHZqNE=
391 |
392 | escape-string-regexp@^1.0.2:
393 | version "1.0.5"
394 | resolved "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4"
395 | integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=
396 |
397 | escodegen@1.8.x:
398 | version "1.8.1"
399 | resolved "https://registry.npmjs.org/escodegen/-/escodegen-1.8.1.tgz#5a5b53af4693110bebb0867aa3430dd3b70a1018"
400 | integrity sha1-WltTr0aTEQvrsIZ6o0MN07cKEBg=
401 | dependencies:
402 | esprima "^2.7.1"
403 | estraverse "^1.9.1"
404 | esutils "^2.0.2"
405 | optionator "^0.8.1"
406 | optionalDependencies:
407 | source-map "~0.2.0"
408 |
409 | escodegen@^1.6.1:
410 | version "1.14.3"
411 | resolved "https://registry.npmjs.org/escodegen/-/escodegen-1.14.3.tgz#4e7b81fba61581dc97582ed78cab7f0e8d63f503"
412 | integrity sha512-qFcX0XJkdg+PB3xjZZG/wKSuT1PnQWx57+TVSjIMmILd2yC/6ByYElPwJnslDsuWuSAp4AwJGumarAAmJch5Kw==
413 | dependencies:
414 | esprima "^4.0.1"
415 | estraverse "^4.2.0"
416 | esutils "^2.0.2"
417 | optionator "^0.8.1"
418 | optionalDependencies:
419 | source-map "~0.6.1"
420 |
421 | esprima@2.7.x, esprima@^2.6.0, esprima@^2.7.1:
422 | version "2.7.3"
423 | resolved "https://registry.npmjs.org/esprima/-/esprima-2.7.3.tgz#96e3b70d5779f6ad49cd032673d1c312767ba581"
424 | integrity sha1-luO3DVd59q1JzQMmc9HDEnZ7pYE=
425 |
426 | esprima@^4.0.0, esprima@^4.0.1:
427 | version "4.0.1"
428 | resolved "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71"
429 | integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==
430 |
431 | estraverse@^1.9.1:
432 | version "1.9.3"
433 | resolved "https://registry.npmjs.org/estraverse/-/estraverse-1.9.3.tgz#af67f2dc922582415950926091a4005d29c9bb44"
434 | integrity sha1-r2fy3JIlgkFZUJJgkaQAXSnJu0Q=
435 |
436 | estraverse@^4.2.0:
437 | version "4.3.0"
438 | resolved "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz#398ad3f3c5a24948be7725e83d11a7de28cdbd1d"
439 | integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==
440 |
441 | esutils@^2.0.2:
442 | version "2.0.3"
443 | resolved "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64"
444 | integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==
445 |
446 | extend@~3.0.0, extend@~3.0.2:
447 | version "3.0.2"
448 | resolved "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz#f8b1136b4071fbd8eb140aff858b1019ec2915fa"
449 | integrity sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==
450 |
451 | extsprintf@1.3.0:
452 | version "1.3.0"
453 | resolved "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz#96918440e3041a7a414f8c52e3c574eb3c3e1e05"
454 | integrity sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=
455 |
456 | extsprintf@^1.2.0:
457 | version "1.4.1"
458 | resolved "https://registry.npmjs.org/extsprintf/-/extsprintf-1.4.1.tgz#8d172c064867f235c0c84a596806d279bf4bcc07"
459 | integrity sha512-Wrk35e8ydCKDj/ArClo1VrPVmN8zph5V4AtHwIuHhvMXsKf73UT3BOD+azBIW+3wOJ4FhEH7zyaJCFvChjYvMA==
460 |
461 | fast-deep-equal@^3.1.1:
462 | version "3.1.3"
463 | resolved "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525"
464 | integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==
465 |
466 | fast-json-stable-stringify@^2.0.0:
467 | version "2.1.0"
468 | resolved "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633"
469 | integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==
470 |
471 | fast-levenshtein@~2.0.6:
472 | version "2.0.6"
473 | resolved "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917"
474 | integrity sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=
475 |
476 | forever-agent@~0.6.1:
477 | version "0.6.1"
478 | resolved "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91"
479 | integrity sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=
480 |
481 | form-data@~2.1.1:
482 | version "2.1.4"
483 | resolved "https://registry.npmjs.org/form-data/-/form-data-2.1.4.tgz#33c183acf193276ecaa98143a69e94bfee1750d1"
484 | integrity sha1-M8GDrPGTJ27KqYFDpp6Uv+4XUNE=
485 | dependencies:
486 | asynckit "^0.4.0"
487 | combined-stream "^1.0.5"
488 | mime-types "^2.1.12"
489 |
490 | form-data@~2.3.2:
491 | version "2.3.3"
492 | resolved "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz#dcce52c05f644f298c6a7ab936bd724ceffbf3a6"
493 | integrity sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==
494 | dependencies:
495 | asynckit "^0.4.0"
496 | combined-stream "^1.0.6"
497 | mime-types "^2.1.12"
498 |
499 | front-matter@^2.1.1:
500 | version "2.3.0"
501 | resolved "https://registry.npmjs.org/front-matter/-/front-matter-2.3.0.tgz#7203af896ce357ee04e2aa45169ea91ed7f67504"
502 | integrity sha1-cgOviWzjV+4E4qpFFp6pHtf2dQQ=
503 | dependencies:
504 | js-yaml "^3.10.0"
505 |
506 | fs-extra@^0.26.2:
507 | version "0.26.7"
508 | resolved "https://registry.npmjs.org/fs-extra/-/fs-extra-0.26.7.tgz#9ae1fdd94897798edab76d0918cf42d0c3184fa9"
509 | integrity sha1-muH92UiXeY7at20JGM9C0MMYT6k=
510 | dependencies:
511 | graceful-fs "^4.1.2"
512 | jsonfile "^2.1.0"
513 | klaw "^1.0.0"
514 | path-is-absolute "^1.0.0"
515 | rimraf "^2.2.8"
516 |
517 | fs.realpath@^1.0.0:
518 | version "1.0.0"
519 | resolved "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f"
520 | integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8=
521 |
522 | generate-function@^2.0.0:
523 | version "2.3.1"
524 | resolved "https://registry.npmjs.org/generate-function/-/generate-function-2.3.1.tgz#f069617690c10c868e73b8465746764f97c3479f"
525 | integrity sha512-eeB5GfMNeevm/GRYq20ShmsaGcmI81kIX2K9XQx5miC8KdHaC6Jm0qQ8ZNeGOi7wYB8OsdxKs+Y2oVuTFuVwKQ==
526 | dependencies:
527 | is-property "^1.0.2"
528 |
529 | generate-object-property@^1.1.0:
530 | version "1.2.0"
531 | resolved "https://registry.npmjs.org/generate-object-property/-/generate-object-property-1.2.0.tgz#9c0e1c40308ce804f4783618b937fa88f99d50d0"
532 | integrity sha1-nA4cQDCM6AT0eDYYuTf6iPmdUNA=
533 | dependencies:
534 | is-property "^1.0.0"
535 |
536 | getpass@^0.1.1:
537 | version "0.1.7"
538 | resolved "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz#5eff8e3e684d569ae4cb2b1282604e8ba62149fa"
539 | integrity sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=
540 | dependencies:
541 | assert-plus "^1.0.0"
542 |
543 | glob@3.2.11:
544 | version "3.2.11"
545 | resolved "https://registry.npmjs.org/glob/-/glob-3.2.11.tgz#4a973f635b9190f715d10987d5c00fd2815ebe3d"
546 | integrity sha1-Spc/Y1uRkPcV0QmH1cAP0oFevj0=
547 | dependencies:
548 | inherits "2"
549 | minimatch "0.3"
550 |
551 | glob@^5.0.15:
552 | version "5.0.15"
553 | resolved "https://registry.npmjs.org/glob/-/glob-5.0.15.tgz#1bc936b9e02f4a603fcc222ecf7633d30b8b93b1"
554 | integrity sha1-G8k2ueAvSmA/zCIuz3Yz0wuLk7E=
555 | dependencies:
556 | inflight "^1.0.4"
557 | inherits "2"
558 | minimatch "2 || 3"
559 | once "^1.3.0"
560 | path-is-absolute "^1.0.0"
561 |
562 | glob@^7.1.3:
563 | version "7.2.0"
564 | resolved "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz#d15535af7732e02e948f4c41628bd910293f6023"
565 | integrity sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==
566 | dependencies:
567 | fs.realpath "^1.0.0"
568 | inflight "^1.0.4"
569 | inherits "2"
570 | minimatch "^3.0.4"
571 | once "^1.3.0"
572 | path-is-absolute "^1.0.0"
573 |
574 | graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.1.9:
575 | version "4.2.8"
576 | resolved "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.8.tgz#e412b8d33f5e006593cbd3cee6df9f2cebbe802a"
577 | integrity sha512-qkIilPUYcNhJpd33n0GBXTB1MMPp14TxEsEs0pTrsSVucApsYzW5V+Q8Qxhik6KU3evy+qkAAowTByymK0avdg==
578 |
579 | growl@1.9.2:
580 | version "1.9.2"
581 | resolved "https://registry.npmjs.org/growl/-/growl-1.9.2.tgz#0ea7743715db8d8de2c5ede1775e1b45ac85c02f"
582 | integrity sha1-Dqd0NxXbjY3ixe3hd14bRayFwC8=
583 |
584 | handlebars@^4.0.1:
585 | version "4.7.7"
586 | resolved "https://registry.npmjs.org/handlebars/-/handlebars-4.7.7.tgz#9ce33416aad02dbd6c8fafa8240d5d98004945a1"
587 | integrity sha512-aAcXm5OAfE/8IXkcZvCepKU3VzW1/39Fb5ZuqMtgI/hT8X2YgoMvBY5dLhq/cpOvw7Lk1nK/UF71aLG/ZnVYRA==
588 | dependencies:
589 | minimist "^1.2.5"
590 | neo-async "^2.6.0"
591 | source-map "^0.6.1"
592 | wordwrap "^1.0.0"
593 | optionalDependencies:
594 | uglify-js "^3.1.4"
595 |
596 | har-schema@^2.0.0:
597 | version "2.0.0"
598 | resolved "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz#a94c2224ebcac04782a0d9035521f24735b7ec92"
599 | integrity sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=
600 |
601 | har-validator@~2.0.6:
602 | version "2.0.6"
603 | resolved "https://registry.npmjs.org/har-validator/-/har-validator-2.0.6.tgz#cdcbc08188265ad119b6a5a7c8ab70eecfb5d27d"
604 | integrity sha1-zcvAgYgmWtEZtqWnyKtw7s+10n0=
605 | dependencies:
606 | chalk "^1.1.1"
607 | commander "^2.9.0"
608 | is-my-json-valid "^2.12.4"
609 | pinkie-promise "^2.0.0"
610 |
611 | har-validator@~5.1.3:
612 | version "5.1.5"
613 | resolved "https://registry.npmjs.org/har-validator/-/har-validator-5.1.5.tgz#1f0803b9f8cb20c0fa13822df1ecddb36bde1efd"
614 | integrity sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w==
615 | dependencies:
616 | ajv "^6.12.3"
617 | har-schema "^2.0.0"
618 |
619 | has-ansi@^2.0.0:
620 | version "2.0.0"
621 | resolved "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz#34f5049ce1ecdf2b0649af3ef24e45ed35416d91"
622 | integrity sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=
623 | dependencies:
624 | ansi-regex "^2.0.0"
625 |
626 | has-flag@^1.0.0:
627 | version "1.0.0"
628 | resolved "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz#9d9e793165ce017a00f00418c43f942a7b1d11fa"
629 | integrity sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=
630 |
631 | hawk@~3.1.3:
632 | version "3.1.3"
633 | resolved "https://registry.npmjs.org/hawk/-/hawk-3.1.3.tgz#078444bd7c1640b0fe540d2c9b73d59678e8e1c4"
634 | integrity sha1-B4REvXwWQLD+VA0sm3PVlnjo4cQ=
635 | dependencies:
636 | boom "2.x.x"
637 | cryptiles "2.x.x"
638 | hoek "2.x.x"
639 | sntp "1.x.x"
640 |
641 | hoek@2.x.x:
642 | version "2.16.3"
643 | resolved "https://registry.npmjs.org/hoek/-/hoek-2.16.3.tgz#20bb7403d3cea398e91dc4710a8ff1b8274a25ed"
644 | integrity sha1-ILt0A9POo5jpHcRxCo/xuCdKJe0=
645 |
646 | html-encoding-sniffer@^1.0.1:
647 | version "1.0.2"
648 | resolved "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-1.0.2.tgz#e70d84b94da53aa375e11fe3a351be6642ca46f8"
649 | integrity sha512-71lZziiDnsuabfdYiUeWdCVyKuqwWi23L8YeIgV9jSSZHCtb6wB1BKWooH7L3tn4/FuZJMVWyNaIDr4RGmaSYw==
650 | dependencies:
651 | whatwg-encoding "^1.0.1"
652 |
653 | htmlparser2@~3.8.1:
654 | version "3.8.3"
655 | resolved "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.8.3.tgz#996c28b191516a8be86501a7d79757e5c70c1068"
656 | integrity sha1-mWwosZFRaovoZQGn15dX5ccMEGg=
657 | dependencies:
658 | domelementtype "1"
659 | domhandler "2.3"
660 | domutils "1.5"
661 | entities "1.0"
662 | readable-stream "1.1"
663 |
664 | http-signature@~1.1.0:
665 | version "1.1.1"
666 | resolved "https://registry.npmjs.org/http-signature/-/http-signature-1.1.1.tgz#df72e267066cd0ac67fb76adf8e134a8fbcf91bf"
667 | integrity sha1-33LiZwZs0Kxn+3at+OE0qPvPkb8=
668 | dependencies:
669 | assert-plus "^0.2.0"
670 | jsprim "^1.2.2"
671 | sshpk "^1.7.0"
672 |
673 | http-signature@~1.2.0:
674 | version "1.2.0"
675 | resolved "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz#9aecd925114772f3d95b65a60abb8f7c18fbace1"
676 | integrity sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=
677 | dependencies:
678 | assert-plus "^1.0.0"
679 | jsprim "^1.2.2"
680 | sshpk "^1.7.0"
681 |
682 | iconv-lite@0.4.24, iconv-lite@^0.4.13:
683 | version "0.4.24"
684 | resolved "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b"
685 | integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==
686 | dependencies:
687 | safer-buffer ">= 2.1.2 < 3"
688 |
689 | inflight@^1.0.4:
690 | version "1.0.6"
691 | resolved "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9"
692 | integrity sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=
693 | dependencies:
694 | once "^1.3.0"
695 | wrappy "1"
696 |
697 | inherits@2, inherits@~2.0.1:
698 | version "2.0.4"
699 | resolved "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c"
700 | integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==
701 |
702 | inherits@2.0.3:
703 | version "2.0.3"
704 | resolved "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de"
705 | integrity sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=
706 |
707 | is-my-ip-valid@^1.0.0:
708 | version "1.0.0"
709 | resolved "https://registry.npmjs.org/is-my-ip-valid/-/is-my-ip-valid-1.0.0.tgz#7b351b8e8edd4d3995d4d066680e664d94696824"
710 | integrity sha512-gmh/eWXROncUzRnIa1Ubrt5b8ep/MGSnfAUI3aRp+sqTCs1tv1Isl8d8F6JmkN3dXKc3ehZMrtiPN9eL03NuaQ==
711 |
712 | is-my-json-valid@^2.12.4:
713 | version "2.20.6"
714 | resolved "https://registry.npmjs.org/is-my-json-valid/-/is-my-json-valid-2.20.6.tgz#a9d89e56a36493c77bda1440d69ae0dc46a08387"
715 | integrity sha512-1JQwulVNjx8UqkPE/bqDaxtH4PXCe/2VRh/y3p99heOV87HG4Id5/VfDswd+YiAfHcRTfDlWgISycnHuhZq1aw==
716 | dependencies:
717 | generate-function "^2.0.0"
718 | generate-object-property "^1.1.0"
719 | is-my-ip-valid "^1.0.0"
720 | jsonpointer "^5.0.0"
721 | xtend "^4.0.0"
722 |
723 | is-property@^1.0.0, is-property@^1.0.2:
724 | version "1.0.2"
725 | resolved "https://registry.npmjs.org/is-property/-/is-property-1.0.2.tgz#57fe1c4e48474edd65b09911f26b1cd4095dda84"
726 | integrity sha1-V/4cTkhHTt1lsJkR8msc1Ald2oQ=
727 |
728 | is-typedarray@~1.0.0:
729 | version "1.0.0"
730 | resolved "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a"
731 | integrity sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=
732 |
733 | isarray@0.0.1:
734 | version "0.0.1"
735 | resolved "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz#8a18acfca9a8f4177e09abfc6038939b05d1eedf"
736 | integrity sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=
737 |
738 | isexe@^2.0.0:
739 | version "2.0.0"
740 | resolved "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10"
741 | integrity sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=
742 |
743 | isstream@~0.1.2:
744 | version "0.1.2"
745 | resolved "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a"
746 | integrity sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=
747 |
748 | istanbul@^0.4.0:
749 | version "0.4.5"
750 | resolved "https://registry.npmjs.org/istanbul/-/istanbul-0.4.5.tgz#65c7d73d4c4da84d4f3ac310b918fb0b8033733b"
751 | integrity sha1-ZcfXPUxNqE1POsMQuRj7C4Azczs=
752 | dependencies:
753 | abbrev "1.0.x"
754 | async "1.x"
755 | escodegen "1.8.x"
756 | esprima "2.7.x"
757 | glob "^5.0.15"
758 | handlebars "^4.0.1"
759 | js-yaml "3.x"
760 | mkdirp "0.5.x"
761 | nopt "3.x"
762 | once "1.x"
763 | resolve "1.1.x"
764 | supports-color "^3.1.0"
765 | which "^1.1.1"
766 | wordwrap "^1.0.0"
767 |
768 | jade@0.26.3:
769 | version "0.26.3"
770 | resolved "https://registry.npmjs.org/jade/-/jade-0.26.3.tgz#8f10d7977d8d79f2f6ff862a81b0513ccb25686c"
771 | integrity sha1-jxDXl32NefL2/4YqgbBRPMslaGw=
772 | dependencies:
773 | commander "0.6.1"
774 | mkdirp "0.3.0"
775 |
776 | js-yaml@3.6.1:
777 | version "3.6.1"
778 | resolved "https://registry.npmjs.org/js-yaml/-/js-yaml-3.6.1.tgz#6e5fe67d8b205ce4d22fad05b7781e8dadcc4b30"
779 | integrity sha1-bl/mfYsgXOTSL60Ft3geja3MSzA=
780 | dependencies:
781 | argparse "^1.0.7"
782 | esprima "^2.6.0"
783 |
784 | js-yaml@3.x, js-yaml@^3.10.0:
785 | version "3.14.1"
786 | resolved "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz#dae812fdb3825fa306609a8717383c50c36a0537"
787 | integrity sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==
788 | dependencies:
789 | argparse "^1.0.7"
790 | esprima "^4.0.0"
791 |
792 | jsbn@~0.1.0:
793 | version "0.1.1"
794 | resolved "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513"
795 | integrity sha1-peZUwuWi3rXyAdls77yoDA7y9RM=
796 |
797 | jsdom@^7.0.2:
798 | version "7.2.2"
799 | resolved "https://registry.npmjs.org/jsdom/-/jsdom-7.2.2.tgz#40b402770c2bda23469096bee91ab675e3b1fc6e"
800 | integrity sha1-QLQCdwwr2iNGkJa+6Rq2deOx/G4=
801 | dependencies:
802 | abab "^1.0.0"
803 | acorn "^2.4.0"
804 | acorn-globals "^1.0.4"
805 | cssom ">= 0.3.0 < 0.4.0"
806 | cssstyle ">= 0.2.29 < 0.3.0"
807 | escodegen "^1.6.1"
808 | nwmatcher ">= 1.3.7 < 2.0.0"
809 | parse5 "^1.5.1"
810 | request "^2.55.0"
811 | sax "^1.1.4"
812 | symbol-tree ">= 3.1.0 < 4.0.0"
813 | tough-cookie "^2.2.0"
814 | webidl-conversions "^2.0.0"
815 | whatwg-url-compat "~0.6.5"
816 | xml-name-validator ">= 2.0.1 < 3.0.0"
817 |
818 | jsdom@^9.0.0:
819 | version "9.12.0"
820 | resolved "https://registry.npmjs.org/jsdom/-/jsdom-9.12.0.tgz#e8c546fffcb06c00d4833ca84410fed7f8a097d4"
821 | integrity sha1-6MVG//ywbADUgzyoRBD+1/igl9Q=
822 | dependencies:
823 | abab "^1.0.3"
824 | acorn "^4.0.4"
825 | acorn-globals "^3.1.0"
826 | array-equal "^1.0.0"
827 | content-type-parser "^1.0.1"
828 | cssom ">= 0.3.2 < 0.4.0"
829 | cssstyle ">= 0.2.37 < 0.3.0"
830 | escodegen "^1.6.1"
831 | html-encoding-sniffer "^1.0.1"
832 | nwmatcher ">= 1.3.9 < 2.0.0"
833 | parse5 "^1.5.1"
834 | request "^2.79.0"
835 | sax "^1.2.1"
836 | symbol-tree "^3.2.1"
837 | tough-cookie "^2.3.2"
838 | webidl-conversions "^4.0.0"
839 | whatwg-encoding "^1.0.1"
840 | whatwg-url "^4.3.0"
841 | xml-name-validator "^2.0.1"
842 |
843 | json-schema-traverse@^0.4.1:
844 | version "0.4.1"
845 | resolved "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660"
846 | integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==
847 |
848 | json-schema@0.4.0:
849 | version "0.4.0"
850 | resolved "https://registry.npmjs.org/json-schema/-/json-schema-0.4.0.tgz#f7de4cf6efab838ebaeb3236474cbba5a1930ab5"
851 | integrity sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==
852 |
853 | json-stringify-safe@~5.0.1:
854 | version "5.0.1"
855 | resolved "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb"
856 | integrity sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=
857 |
858 | jsonfile@^2.1.0:
859 | version "2.4.0"
860 | resolved "https://registry.npmjs.org/jsonfile/-/jsonfile-2.4.0.tgz#3736a2b428b87bbda0cc83b53fa3d633a35c2ae8"
861 | integrity sha1-NzaitCi4e72gzIO1P6PWM6NcKug=
862 | optionalDependencies:
863 | graceful-fs "^4.1.6"
864 |
865 | jsonpointer@^5.0.0:
866 | version "5.0.0"
867 | resolved "https://registry.npmjs.org/jsonpointer/-/jsonpointer-5.0.0.tgz#f802669a524ec4805fa7389eadbc9921d5dc8072"
868 | integrity sha512-PNYZIdMjVIvVgDSYKTT63Y+KZ6IZvGRNNWcxwD+GNnUz1MKPfv30J8ueCjdwcN0nDx2SlshgyB7Oy0epAzVRRg==
869 |
870 | jsprim@^1.2.2:
871 | version "1.4.2"
872 | resolved "https://registry.npmjs.org/jsprim/-/jsprim-1.4.2.tgz#712c65533a15c878ba59e9ed5f0e26d5b77c5feb"
873 | integrity sha512-P2bSOMAc/ciLz6DzgjVlGJP9+BrJWu5UDGK70C2iweC5QBIeFf0ZXRvGjEj2uYgrY2MkAAhsSWHDWlFtEroZWw==
874 | dependencies:
875 | assert-plus "1.0.0"
876 | extsprintf "1.3.0"
877 | json-schema "0.4.0"
878 | verror "1.10.0"
879 |
880 | klaw@^1.0.0:
881 | version "1.3.1"
882 | resolved "https://registry.npmjs.org/klaw/-/klaw-1.3.1.tgz#4088433b46b3b1ba259d78785d8e96f73ba02439"
883 | integrity sha1-QIhDO0azsbolnXh4XY6W9zugJDk=
884 | optionalDependencies:
885 | graceful-fs "^4.1.9"
886 |
887 | lcov-parse@0.0.10:
888 | version "0.0.10"
889 | resolved "https://registry.npmjs.org/lcov-parse/-/lcov-parse-0.0.10.tgz#1b0b8ff9ac9c7889250582b70b71315d9da6d9a3"
890 | integrity sha1-GwuP+ayceIklBYK3C3ExXZ2m2aM=
891 |
892 | levn@~0.3.0:
893 | version "0.3.0"
894 | resolved "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz#3b09924edf9f083c0490fdd4c0bc4421e04764ee"
895 | integrity sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=
896 | dependencies:
897 | prelude-ls "~1.1.2"
898 | type-check "~0.3.2"
899 |
900 | lodash@^3.10.1:
901 | version "3.10.1"
902 | resolved "https://registry.npmjs.org/lodash/-/lodash-3.10.1.tgz#5bf45e8e49ba4189e17d482789dfd15bd140b7b6"
903 | integrity sha1-W/Rejkm6QYnhfUgnid/RW9FAt7Y=
904 |
905 | lodash@^4.1.0:
906 | version "4.17.21"
907 | resolved "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c"
908 | integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==
909 |
910 | log-driver@1.2.5:
911 | version "1.2.5"
912 | resolved "https://registry.npmjs.org/log-driver/-/log-driver-1.2.5.tgz#7ae4ec257302fd790d557cb10c97100d857b0056"
913 | integrity sha1-euTsJXMC/XkNVXyxDJcQDYV7AFY=
914 |
915 | lru-cache@2:
916 | version "2.7.3"
917 | resolved "https://registry.npmjs.org/lru-cache/-/lru-cache-2.7.3.tgz#6d4524e8b955f95d4f5b58851ce21dd72fb4e952"
918 | integrity sha1-bUUk6LlV+V1PW1iFHOId1y+06VI=
919 |
920 | mime-db@1.51.0:
921 | version "1.51.0"
922 | resolved "https://registry.npmjs.org/mime-db/-/mime-db-1.51.0.tgz#d9ff62451859b18342d960850dc3cfb77e63fb0c"
923 | integrity sha512-5y8A56jg7XVQx2mbv1lu49NR4dokRnhZYTtL+KGfaa27uq4pSTXkwQkFJl4pkRMyNFz/EtYDSkiiEHx3F7UN6g==
924 |
925 | mime-types@^2.1.12, mime-types@~2.1.19, mime-types@~2.1.7:
926 | version "2.1.34"
927 | resolved "https://registry.npmjs.org/mime-types/-/mime-types-2.1.34.tgz#5a712f9ec1503511a945803640fafe09d3793c24"
928 | integrity sha512-6cP692WwGIs9XXdOO4++N+7qjqv0rqxxVvJ3VHPh/Sc9mVZcQP+ZGhkKiTvWMQRr2tbHkJP/Yn7Y0npb3ZBs4A==
929 | dependencies:
930 | mime-db "1.51.0"
931 |
932 | minimatch@0.3:
933 | version "0.3.0"
934 | resolved "https://registry.npmjs.org/minimatch/-/minimatch-0.3.0.tgz#275d8edaac4f1bb3326472089e7949c8394699dd"
935 | integrity sha1-J12O2qxPG7MyZHIInnlJyDlGmd0=
936 | dependencies:
937 | lru-cache "2"
938 | sigmund "~1.0.0"
939 |
940 | "minimatch@2 || 3", minimatch@^3.0.4:
941 | version "3.0.4"
942 | resolved "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083"
943 | integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==
944 | dependencies:
945 | brace-expansion "^1.1.7"
946 |
947 | minimist@0.0.8:
948 | version "0.0.8"
949 | resolved "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d"
950 | integrity sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=
951 |
952 | minimist@1.2.0:
953 | version "1.2.0"
954 | resolved "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz#a35008b20f41383eec1fb914f4cd5df79a264284"
955 | integrity sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=
956 |
957 | minimist@^1.2.5:
958 | version "1.2.5"
959 | resolved "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz#67d66014b66a6a8aaa0c083c5fd58df4e4e97602"
960 | integrity sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==
961 |
962 | mkdirp@0.3.0:
963 | version "0.3.0"
964 | resolved "https://registry.npmjs.org/mkdirp/-/mkdirp-0.3.0.tgz#1bbf5ab1ba827af23575143490426455f481fe1e"
965 | integrity sha1-G79asbqCevI1dRQ0kEJkVfSB/h4=
966 |
967 | mkdirp@0.5.1:
968 | version "0.5.1"
969 | resolved "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903"
970 | integrity sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=
971 | dependencies:
972 | minimist "0.0.8"
973 |
974 | mkdirp@0.5.x:
975 | version "0.5.5"
976 | resolved "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz#d91cefd62d1436ca0f41620e251288d420099def"
977 | integrity sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==
978 | dependencies:
979 | minimist "^1.2.5"
980 |
981 | mocha@^2.3.3:
982 | version "2.5.3"
983 | resolved "https://registry.npmjs.org/mocha/-/mocha-2.5.3.tgz#161be5bdeb496771eb9b35745050b622b5aefc58"
984 | integrity sha1-FhvlvetJZ3HrmzV0UFC2IrWu/Fg=
985 | dependencies:
986 | commander "2.3.0"
987 | debug "2.2.0"
988 | diff "1.4.0"
989 | escape-string-regexp "1.0.2"
990 | glob "3.2.11"
991 | growl "1.9.2"
992 | jade "0.26.3"
993 | mkdirp "0.5.1"
994 | supports-color "1.2.0"
995 | to-iso-string "0.0.2"
996 |
997 | ms@0.7.1:
998 | version "0.7.1"
999 | resolved "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz#9cd13c03adbff25b65effde7ce864ee952017098"
1000 | integrity sha1-nNE8A62/8ltl7/3nzoZO6VIBcJg=
1001 |
1002 | neo-async@^2.6.0:
1003 | version "2.6.2"
1004 | resolved "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz#b4aafb93e3aeb2d8174ca53cf163ab7d7308305f"
1005 | integrity sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==
1006 |
1007 | nopt@3.x:
1008 | version "3.0.6"
1009 | resolved "https://registry.npmjs.org/nopt/-/nopt-3.0.6.tgz#c6465dbf08abcd4db359317f79ac68a646b28ff9"
1010 | integrity sha1-xkZdvwirzU2zWTF/eaxopkayj/k=
1011 | dependencies:
1012 | abbrev "1"
1013 |
1014 | nth-check@~1.0.1:
1015 | version "1.0.2"
1016 | resolved "https://registry.npmjs.org/nth-check/-/nth-check-1.0.2.tgz#b2bd295c37e3dd58a3bf0700376663ba4d9cf05c"
1017 | integrity sha512-WeBOdju8SnzPN5vTUJYxYUxLeXpCaVP5i5e0LF8fg7WORF2Wd7wFX/pk0tYZk7s8T+J7VLy0Da6J1+wCT0AtHg==
1018 | dependencies:
1019 | boolbase "~1.0.0"
1020 |
1021 | "nwmatcher@>= 1.3.7 < 2.0.0", "nwmatcher@>= 1.3.9 < 2.0.0":
1022 | version "1.4.4"
1023 | resolved "https://registry.npmjs.org/nwmatcher/-/nwmatcher-1.4.4.tgz#2285631f34a95f0d0395cd900c96ed39b58f346e"
1024 | integrity sha512-3iuY4N5dhgMpCUrOVnuAdGrgxVqV2cJpM+XNccjR2DKOB1RUP0aA+wGXEiNziG/UKboFyGBIoKOaNlJxx8bciQ==
1025 |
1026 | oauth-sign@~0.8.1:
1027 | version "0.8.2"
1028 | resolved "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.8.2.tgz#46a6ab7f0aead8deae9ec0565780b7d4efeb9d43"
1029 | integrity sha1-Rqarfwrq2N6unsBWV4C31O/rnUM=
1030 |
1031 | oauth-sign@~0.9.0:
1032 | version "0.9.0"
1033 | resolved "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz#47a7b016baa68b5fa0ecf3dee08a85c679ac6455"
1034 | integrity sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==
1035 |
1036 | once@1.x, once@^1.3.0:
1037 | version "1.4.0"
1038 | resolved "https://registry.npmjs.org/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1"
1039 | integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E=
1040 | dependencies:
1041 | wrappy "1"
1042 |
1043 | optionator@^0.8.1:
1044 | version "0.8.3"
1045 | resolved "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz#84fa1d036fe9d3c7e21d99884b601167ec8fb495"
1046 | integrity sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==
1047 | dependencies:
1048 | deep-is "~0.1.3"
1049 | fast-levenshtein "~2.0.6"
1050 | levn "~0.3.0"
1051 | prelude-ls "~1.1.2"
1052 | type-check "~0.3.2"
1053 | word-wrap "~1.2.3"
1054 |
1055 | parse5@^1.5.1:
1056 | version "1.5.1"
1057 | resolved "https://registry.npmjs.org/parse5/-/parse5-1.5.1.tgz#9b7f3b0de32be78dc2401b17573ccaf0f6f59d94"
1058 | integrity sha1-m387DeMr543CQBsXVzzK8Pb1nZQ=
1059 |
1060 | path-is-absolute@^1.0.0:
1061 | version "1.0.1"
1062 | resolved "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f"
1063 | integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18=
1064 |
1065 | path@^0.12.7:
1066 | version "0.12.7"
1067 | resolved "https://registry.npmjs.org/path/-/path-0.12.7.tgz#d4dc2a506c4ce2197eb481ebfcd5b36c0140b10f"
1068 | integrity sha1-1NwqUGxM4hl+tIHr/NWzbAFAsQ8=
1069 | dependencies:
1070 | process "^0.11.1"
1071 | util "^0.10.3"
1072 |
1073 | performance-now@^2.1.0:
1074 | version "2.1.0"
1075 | resolved "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz#6309f4e0e5fa913ec1c69307ae364b4b377c9e7b"
1076 | integrity sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=
1077 |
1078 | pinkie-promise@^2.0.0:
1079 | version "2.0.1"
1080 | resolved "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz#2135d6dfa7a358c069ac9b178776288228450ffa"
1081 | integrity sha1-ITXW36ejWMBprJsXh3YogihFD/o=
1082 | dependencies:
1083 | pinkie "^2.0.0"
1084 |
1085 | pinkie@^2.0.0:
1086 | version "2.0.4"
1087 | resolved "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz#72556b80cfa0d48a974e80e77248e80ed4f7f870"
1088 | integrity sha1-clVrgM+g1IqXToDnckjoDtT3+HA=
1089 |
1090 | prelude-ls@~1.1.2:
1091 | version "1.1.2"
1092 | resolved "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54"
1093 | integrity sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=
1094 |
1095 | process@^0.11.1:
1096 | version "0.11.10"
1097 | resolved "https://registry.npmjs.org/process/-/process-0.11.10.tgz#7332300e840161bda3e69a1d1d91a7d4bc16f182"
1098 | integrity sha1-czIwDoQBYb2j5podHZGn1LwW8YI=
1099 |
1100 | psl@^1.1.28:
1101 | version "1.8.0"
1102 | resolved "https://registry.npmjs.org/psl/-/psl-1.8.0.tgz#9326f8bcfb013adcc005fdff056acce020e51c24"
1103 | integrity sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ==
1104 |
1105 | punycode@^1.4.1:
1106 | version "1.4.1"
1107 | resolved "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e"
1108 | integrity sha1-wNWmOycYgArY4esPpSachN1BhF4=
1109 |
1110 | punycode@^2.1.0, punycode@^2.1.1:
1111 | version "2.1.1"
1112 | resolved "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec"
1113 | integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==
1114 |
1115 | qs@~6.3.0:
1116 | version "6.3.2"
1117 | resolved "https://registry.npmjs.org/qs/-/qs-6.3.2.tgz#e75bd5f6e268122a2a0e0bda630b2550c166502c"
1118 | integrity sha1-51vV9uJoEioqDgvaYwslUMFmUCw=
1119 |
1120 | qs@~6.5.2:
1121 | version "6.5.2"
1122 | resolved "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz#cb3ae806e8740444584ef154ce8ee98d403f3e36"
1123 | integrity sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==
1124 |
1125 | readable-stream@1.1:
1126 | version "1.1.13"
1127 | resolved "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.13.tgz#f6eef764f514c89e2b9e23146a75ba106756d23e"
1128 | integrity sha1-9u73ZPUUyJ4rniMUanW6EGdW0j4=
1129 | dependencies:
1130 | core-util-is "~1.0.0"
1131 | inherits "~2.0.1"
1132 | isarray "0.0.1"
1133 | string_decoder "~0.10.x"
1134 |
1135 | request@2.79.0:
1136 | version "2.79.0"
1137 | resolved "https://registry.npmjs.org/request/-/request-2.79.0.tgz#4dfe5bf6be8b8cdc37fcf93e04b65577722710de"
1138 | integrity sha1-Tf5b9r6LjNw3/Pk+BLZVd3InEN4=
1139 | dependencies:
1140 | aws-sign2 "~0.6.0"
1141 | aws4 "^1.2.1"
1142 | caseless "~0.11.0"
1143 | combined-stream "~1.0.5"
1144 | extend "~3.0.0"
1145 | forever-agent "~0.6.1"
1146 | form-data "~2.1.1"
1147 | har-validator "~2.0.6"
1148 | hawk "~3.1.3"
1149 | http-signature "~1.1.0"
1150 | is-typedarray "~1.0.0"
1151 | isstream "~0.1.2"
1152 | json-stringify-safe "~5.0.1"
1153 | mime-types "~2.1.7"
1154 | oauth-sign "~0.8.1"
1155 | qs "~6.3.0"
1156 | stringstream "~0.0.4"
1157 | tough-cookie "~2.3.0"
1158 | tunnel-agent "~0.4.1"
1159 | uuid "^3.0.0"
1160 |
1161 | request@^2.55.0, request@^2.69.0, request@^2.79.0:
1162 | version "2.88.2"
1163 | resolved "https://registry.npmjs.org/request/-/request-2.88.2.tgz#d73c918731cb5a87da047e207234146f664d12b3"
1164 | integrity sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==
1165 | dependencies:
1166 | aws-sign2 "~0.7.0"
1167 | aws4 "^1.8.0"
1168 | caseless "~0.12.0"
1169 | combined-stream "~1.0.6"
1170 | extend "~3.0.2"
1171 | forever-agent "~0.6.1"
1172 | form-data "~2.3.2"
1173 | har-validator "~5.1.3"
1174 | http-signature "~1.2.0"
1175 | is-typedarray "~1.0.0"
1176 | isstream "~0.1.2"
1177 | json-stringify-safe "~5.0.1"
1178 | mime-types "~2.1.19"
1179 | oauth-sign "~0.9.0"
1180 | performance-now "^2.1.0"
1181 | qs "~6.5.2"
1182 | safe-buffer "^5.1.2"
1183 | tough-cookie "~2.5.0"
1184 | tunnel-agent "^0.6.0"
1185 | uuid "^3.3.2"
1186 |
1187 | resolve@1.1.x:
1188 | version "1.1.7"
1189 | resolved "https://registry.npmjs.org/resolve/-/resolve-1.1.7.tgz#203114d82ad2c5ed9e8e0411b3932875e889e97b"
1190 | integrity sha1-IDEU2CrSxe2ejgQRs5ModeiJ6Xs=
1191 |
1192 | rimraf@^2.2.8:
1193 | version "2.7.1"
1194 | resolved "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz#35797f13a7fdadc566142c29d4f07ccad483e3ec"
1195 | integrity sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==
1196 | dependencies:
1197 | glob "^7.1.3"
1198 |
1199 | safe-buffer@^5.0.1, safe-buffer@^5.1.2:
1200 | version "5.2.1"
1201 | resolved "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6"
1202 | integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==
1203 |
1204 | "safer-buffer@>= 2.1.2 < 3", safer-buffer@^2.0.2, safer-buffer@^2.1.0, safer-buffer@~2.1.0:
1205 | version "2.1.2"
1206 | resolved "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a"
1207 | integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==
1208 |
1209 | sax@^1.1.4, sax@^1.2.1:
1210 | version "1.2.4"
1211 | resolved "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9"
1212 | integrity sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==
1213 |
1214 | should-equal@0.5.0:
1215 | version "0.5.0"
1216 | resolved "https://registry.npmjs.org/should-equal/-/should-equal-0.5.0.tgz#c797f135f3067feb69ebecdb306b1c3fe21b3e6f"
1217 | integrity sha1-x5fxNfMGf+tp6+zbMGscP+IbPm8=
1218 | dependencies:
1219 | should-type "0.2.0"
1220 |
1221 | should-format@0.3.1:
1222 | version "0.3.1"
1223 | resolved "https://registry.npmjs.org/should-format/-/should-format-0.3.1.tgz#2cbb782461670ace4292b2b1ec468db8cf99e330"
1224 | integrity sha1-LLt4JGFnCs5CkrKx7EaNuM+Z4zA=
1225 | dependencies:
1226 | should-type "0.2.0"
1227 |
1228 | should-type@0.2.0:
1229 | version "0.2.0"
1230 | resolved "https://registry.npmjs.org/should-type/-/should-type-0.2.0.tgz#6707ef95529d989dcc098fe0753ab1f9136bb7f6"
1231 | integrity sha1-ZwfvlVKdmJ3MCY/gdTqx+RNrt/Y=
1232 |
1233 | should@^7.1.1:
1234 | version "7.1.1"
1235 | resolved "https://registry.npmjs.org/should/-/should-7.1.1.tgz#6464c48b6f7c1e1f18ac0483578fa2dd55c2c6e0"
1236 | integrity sha1-ZGTEi298Hh8YrASDV4+i3VXCxuA=
1237 | dependencies:
1238 | should-equal "0.5.0"
1239 | should-format "0.3.1"
1240 | should-type "0.2.0"
1241 |
1242 | sigmund@~1.0.0:
1243 | version "1.0.1"
1244 | resolved "https://registry.npmjs.org/sigmund/-/sigmund-1.0.1.tgz#3ff21f198cad2175f9f3b781853fd94d0d19b590"
1245 | integrity sha1-P/IfGYytIXX587eBhT/ZTQ0ZtZA=
1246 |
1247 | sntp@1.x.x:
1248 | version "1.0.9"
1249 | resolved "https://registry.npmjs.org/sntp/-/sntp-1.0.9.tgz#6541184cc90aeea6c6e7b35e2659082443c66198"
1250 | integrity sha1-ZUEYTMkK7qbG57NeJlkIJEPGYZg=
1251 | dependencies:
1252 | hoek "2.x.x"
1253 |
1254 | source-map@^0.6.1, source-map@~0.6.1:
1255 | version "0.6.1"
1256 | resolved "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263"
1257 | integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==
1258 |
1259 | source-map@~0.2.0:
1260 | version "0.2.0"
1261 | resolved "https://registry.npmjs.org/source-map/-/source-map-0.2.0.tgz#dab73fbcfc2ba819b4de03bd6f6eaa48164b3f9d"
1262 | integrity sha1-2rc/vPwrqBm03gO9b26qSBZLP50=
1263 | dependencies:
1264 | amdefine ">=0.0.4"
1265 |
1266 | sprintf-js@~1.0.2:
1267 | version "1.0.3"
1268 | resolved "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c"
1269 | integrity sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=
1270 |
1271 | sshpk@^1.7.0:
1272 | version "1.16.1"
1273 | resolved "https://registry.npmjs.org/sshpk/-/sshpk-1.16.1.tgz#fb661c0bef29b39db40769ee39fa70093d6f6877"
1274 | integrity sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg==
1275 | dependencies:
1276 | asn1 "~0.2.3"
1277 | assert-plus "^1.0.0"
1278 | bcrypt-pbkdf "^1.0.0"
1279 | dashdash "^1.12.0"
1280 | ecc-jsbn "~0.1.1"
1281 | getpass "^0.1.1"
1282 | jsbn "~0.1.0"
1283 | safer-buffer "^2.0.2"
1284 | tweetnacl "~0.14.0"
1285 |
1286 | string_decoder@~0.10.x:
1287 | version "0.10.31"
1288 | resolved "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz#62e203bc41766c6c28c9fc84301dab1c5310fa94"
1289 | integrity sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=
1290 |
1291 | stringstream@~0.0.4:
1292 | version "0.0.6"
1293 | resolved "https://registry.npmjs.org/stringstream/-/stringstream-0.0.6.tgz#7880225b0d4ad10e30927d167a1d6f2fd3b33a72"
1294 | integrity sha512-87GEBAkegbBcweToUrdzf3eLhWNg06FJTebl4BVJz/JgWy8CvEr9dRtX5qWphiynMSQlxxi+QqN0z5T32SLlhA==
1295 |
1296 | strip-ansi@^3.0.0:
1297 | version "3.0.1"
1298 | resolved "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf"
1299 | integrity sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=
1300 | dependencies:
1301 | ansi-regex "^2.0.0"
1302 |
1303 | supports-color@1.2.0:
1304 | version "1.2.0"
1305 | resolved "https://registry.npmjs.org/supports-color/-/supports-color-1.2.0.tgz#ff1ed1e61169d06b3cf2d588e188b18d8847e17e"
1306 | integrity sha1-/x7R5hFp0Gs88tWI4YixjYhH4X4=
1307 |
1308 | supports-color@^2.0.0:
1309 | version "2.0.0"
1310 | resolved "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7"
1311 | integrity sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=
1312 |
1313 | supports-color@^3.1.0:
1314 | version "3.2.3"
1315 | resolved "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz#65ac0504b3954171d8a64946b2ae3cbb8a5f54f6"
1316 | integrity sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=
1317 | dependencies:
1318 | has-flag "^1.0.0"
1319 |
1320 | "symbol-tree@>= 3.1.0 < 4.0.0", symbol-tree@^3.2.1:
1321 | version "3.2.4"
1322 | resolved "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz#430637d248ba77e078883951fb9aa0eed7c63fa2"
1323 | integrity sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==
1324 |
1325 | to-iso-string@0.0.2:
1326 | version "0.0.2"
1327 | resolved "https://registry.npmjs.org/to-iso-string/-/to-iso-string-0.0.2.tgz#4dc19e664dfccbe25bd8db508b00c6da158255d1"
1328 | integrity sha1-TcGeZk38y+Jb2NtQiwDG2hWCVdE=
1329 |
1330 | to-markdown@^3.1.1:
1331 | version "3.1.1"
1332 | resolved "https://registry.npmjs.org/to-markdown/-/to-markdown-3.1.1.tgz#251e241b8c74c7ad177292e6c52cc195c9268c11"
1333 | integrity sha1-JR4kG4x0x60XcpLmxSzBlckmjBE=
1334 | dependencies:
1335 | collapse-whitespace "1.1.2"
1336 | jsdom "^9.0.0"
1337 |
1338 | tough-cookie@^2.2.0, tough-cookie@^2.3.2, tough-cookie@~2.5.0:
1339 | version "2.5.0"
1340 | resolved "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz#cd9fb2a0aa1d5a12b473bd9fb96fa3dcff65ade2"
1341 | integrity sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==
1342 | dependencies:
1343 | psl "^1.1.28"
1344 | punycode "^2.1.1"
1345 |
1346 | tough-cookie@~2.3.0:
1347 | version "2.3.4"
1348 | resolved "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.3.4.tgz#ec60cee38ac675063ffc97a5c18970578ee83655"
1349 | integrity sha512-TZ6TTfI5NtZnuyy/Kecv+CnoROnyXn2DN97LontgQpCwsX2XyLYCC0ENhYkehSOwAp8rTQKc/NUIF7BkQ5rKLA==
1350 | dependencies:
1351 | punycode "^1.4.1"
1352 |
1353 | tr46@~0.0.1, tr46@~0.0.3:
1354 | version "0.0.3"
1355 | resolved "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz#8184fd347dac9cdc185992f3a6622e14b9d9ab6a"
1356 | integrity sha1-gYT9NH2snNwYWZLzpmIuFLnZq2o=
1357 |
1358 | tunnel-agent@^0.6.0:
1359 | version "0.6.0"
1360 | resolved "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz#27a5dea06b36b04a0a9966774b290868f0fc40fd"
1361 | integrity sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=
1362 | dependencies:
1363 | safe-buffer "^5.0.1"
1364 |
1365 | tunnel-agent@~0.4.1:
1366 | version "0.4.3"
1367 | resolved "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.4.3.tgz#6373db76909fe570e08d73583365ed828a74eeeb"
1368 | integrity sha1-Y3PbdpCf5XDgjXNYM2Xtgop07us=
1369 |
1370 | tweetnacl@^0.14.3, tweetnacl@~0.14.0:
1371 | version "0.14.5"
1372 | resolved "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz#5ae68177f192d4456269d108afa93ff8743f4f64"
1373 | integrity sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=
1374 |
1375 | type-check@~0.3.2:
1376 | version "0.3.2"
1377 | resolved "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz#5884cab512cf1d355e3fb784f30804b2b520db72"
1378 | integrity sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=
1379 | dependencies:
1380 | prelude-ls "~1.1.2"
1381 |
1382 | uglify-js@^3.1.4:
1383 | version "3.14.4"
1384 | resolved "https://registry.npmjs.org/uglify-js/-/uglify-js-3.14.4.tgz#68756f17d1b90b9d289341736cb9a567d6882f90"
1385 | integrity sha512-AbiSR44J0GoCeV81+oxcy/jDOElO2Bx3d0MfQCUShq7JRXaM4KtQopZsq2vFv8bCq2yMaGrw1FgygUd03RyRDA==
1386 |
1387 | uri-js@^4.2.2:
1388 | version "4.4.1"
1389 | resolved "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz#9b1a52595225859e55f669d928f88c6c57f2a77e"
1390 | integrity sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==
1391 | dependencies:
1392 | punycode "^2.1.0"
1393 |
1394 | util@^0.10.3:
1395 | version "0.10.4"
1396 | resolved "https://registry.npmjs.org/util/-/util-0.10.4.tgz#3aa0125bfe668a4672de58857d3ace27ecb76901"
1397 | integrity sha512-0Pm9hTQ3se5ll1XihRic3FDIku70C+iHUdT/W926rSgHV5QgXsYbKZN8MSC3tJtSkhuROzvsQjAaFENRXr+19A==
1398 | dependencies:
1399 | inherits "2.0.3"
1400 |
1401 | uuid@^3.0.0, uuid@^3.3.2:
1402 | version "3.4.0"
1403 | resolved "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz#b23e4358afa8a202fe7a100af1f5f883f02007ee"
1404 | integrity sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==
1405 |
1406 | verror@1.10.0:
1407 | version "1.10.0"
1408 | resolved "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz#3a105ca17053af55d6e270c1f8288682e18da400"
1409 | integrity sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=
1410 | dependencies:
1411 | assert-plus "^1.0.0"
1412 | core-util-is "1.0.2"
1413 | extsprintf "^1.2.0"
1414 |
1415 | void-elements@^2.0.1:
1416 | version "2.0.1"
1417 | resolved "https://registry.npmjs.org/void-elements/-/void-elements-2.0.1.tgz#c066afb582bb1cb4128d60ea92392e94d5e9dbec"
1418 | integrity sha1-wGavtYK7HLQSjWDqkjkulNXp2+w=
1419 |
1420 | webidl-conversions@^2.0.0:
1421 | version "2.0.1"
1422 | resolved "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-2.0.1.tgz#3bf8258f7d318c7443c36f2e169402a1a6703506"
1423 | integrity sha1-O/glj30xjHRDw28uFpQCoaZwNQY=
1424 |
1425 | webidl-conversions@^3.0.0:
1426 | version "3.0.1"
1427 | resolved "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz#24534275e2a7bc6be7bc86611cc16ae0a5654871"
1428 | integrity sha1-JFNCdeKnvGvnvIZhHMFq4KVlSHE=
1429 |
1430 | webidl-conversions@^4.0.0:
1431 | version "4.0.2"
1432 | resolved "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-4.0.2.tgz#a855980b1f0b6b359ba1d5d9fb39ae941faa63ad"
1433 | integrity sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==
1434 |
1435 | whatwg-encoding@^1.0.1:
1436 | version "1.0.5"
1437 | resolved "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-1.0.5.tgz#5abacf777c32166a51d085d6b4f3e7d27113ddb0"
1438 | integrity sha512-b5lim54JOPN9HtzvK9HFXvBma/rnfFeqsic0hSpjtDbVxR3dJKLc+KB4V6GgiGOvl7CY/KNh8rxSo9DKQrnUEw==
1439 | dependencies:
1440 | iconv-lite "0.4.24"
1441 |
1442 | whatwg-url-compat@~0.6.5:
1443 | version "0.6.5"
1444 | resolved "https://registry.npmjs.org/whatwg-url-compat/-/whatwg-url-compat-0.6.5.tgz#00898111af689bb097541cd5a45ca6c8798445bf"
1445 | integrity sha1-AImBEa9om7CXVBzVpFymyHmERb8=
1446 | dependencies:
1447 | tr46 "~0.0.1"
1448 |
1449 | whatwg-url@^4.3.0:
1450 | version "4.8.0"
1451 | resolved "https://registry.npmjs.org/whatwg-url/-/whatwg-url-4.8.0.tgz#d2981aa9148c1e00a41c5a6131166ab4683bbcc0"
1452 | integrity sha1-0pgaqRSMHgCkHFphMRZqtGg7vMA=
1453 | dependencies:
1454 | tr46 "~0.0.3"
1455 | webidl-conversions "^3.0.0"
1456 |
1457 | which@^1.1.1:
1458 | version "1.3.1"
1459 | resolved "https://registry.npmjs.org/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a"
1460 | integrity sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==
1461 | dependencies:
1462 | isexe "^2.0.0"
1463 |
1464 | word-wrap@~1.2.3:
1465 | version "1.2.3"
1466 | resolved "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz#610636f6b1f703891bd34771ccb17fb93b47079c"
1467 | integrity sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==
1468 |
1469 | wordwrap@^1.0.0:
1470 | version "1.0.0"
1471 | resolved "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz#27584810891456a4171c8d0226441ade90cbcaeb"
1472 | integrity sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=
1473 |
1474 | wrappy@1:
1475 | version "1.0.2"
1476 | resolved "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f"
1477 | integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=
1478 |
1479 | "xml-name-validator@>= 2.0.1 < 3.0.0", xml-name-validator@^2.0.1:
1480 | version "2.0.1"
1481 | resolved "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-2.0.1.tgz#4d8b8f1eccd3419aa362061becef515e1e559635"
1482 | integrity sha1-TYuPHszTQZqjYgYb7O9RXh5VljU=
1483 |
1484 | xtend@^4.0.0:
1485 | version "4.0.2"
1486 | resolved "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54"
1487 | integrity sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==
1488 |
--------------------------------------------------------------------------------