diff --git a/README.md b/README.md index 759a282..c50c79c 100644 --- a/README.md +++ b/README.md @@ -1,1010 +1,49 @@ -# 扩展 layui 的导出插件 layui.excel +# LAY-EXCEL 简单快捷的导出插件 -之前在工作过程中还有社区交流过程中,发现对导出 Excel 文件有需求,所以就萌发了封装插件的想法。导出excel功能基于 XLSX.js,下载功能基于 FileSaver,读取文件基于 H5的 FileReader。 +现有导出前端库中,XLSX.JS功能强大但是操作颇为不便,于是封装了此插件,依赖jQuery,支持Layui插件形式加载,**导出仅需一句话**。 -> 环境提示:预览环境需要部署在服务器下,不然无法异步获取需要导出的数据 +导出excel功能基于 XLSX.js,下载功能基于 FileSaver,读取文件基于 H5的 FileReader。 -> 版本更新提示:如果使用 v1.2 以前的版本,filterExportData 的映射关系有所调整,请注意 +**功能演示地址:**[http://excel.wj2015.com](http://excel.wj2015.com) -> 浏览器兼容性:支持IE10+、Firefox、chrome +**文档地址:**[http://excel.wj2015.com/_book/](http://excel.wj2015.com/_book/) -> 非Layui环境使用:**需要先加载 jQuery,再加载 layui_exts/excel.min.js,随后使用全局变量 LAY_EXCEL 调用函数** +![1570418356365](ScreenToGif.gif) -> 特别注意:**不能直接在IFRAME里边直接调用导出方法,因为浏览器会限制这种导出行为,如有遇到此类情况,可使用 parent.layui.excel.exportExcel() 的方式调用父级页面函数以避免这个问题(父页面需要先加载插件)** +## 兼容性 -#### 备选下载 -国内可以**使用码云**,定期与github同步,[https://gitee.com/wangerzi/layui-excel](https://gitee.com/wangerzi/layui-excel) +支持IE10+、Firefox、chrome +## 快速入门 -## 功能演示: +一句话导出,快速上手请查看 [『快速上手』](docs/快速入门.md),更多便捷函数请查看[『函数列表』](docs/函数列表/README.md),样式设置请查看[『样式设置专区』](docs/样式设置专区.md)。 -##### 在线演示: +## 待完成需求 -[http://excel.wj2015.com/](http://excel.wj2015.com/) +- [ ] 【文档】制作Gitbook方便查阅 +- [ ] 【文档】新增『参与开发』页,以便其他开发者上手此插件 +- [ ] 【文档】新增『常见问题整理』,整理群内高频问题,提高处理效率 +- [ ] 【测试】单元测试覆盖 +- [ ] 【测试】建立CI/CD机制 +- [ ] 【导出】分段递归获取数据函数封装 +- [ ] 【导出】分段压缩打包 +- [ ] 【导出】导出图片(卡住) +- [ ] 【导入】导入图片(卡住) +- [ ] 【兼容性】导入支持IE11(卡住) -![功能演示](https://raw.githubusercontent.com/wangerzi/layui-excel/master/ExcelHeart.png) -![功能演示](https://raw.githubusercontent.com/wangerzi/layui-excel/master/ScreenToGif.gif) +## 参与开发 -##### 沟通交流群: +如果有好的想法,或者想实现 [『待完成需求』](#待完成需求)中的部分功能,请邮 [admin@wj2015.com](mailto:admin@wj2015.com),或者加群 [555056599](https://jq.qq.com/?_wv=1027&k=5RcqcwI) 讨论。 -**QQ群号:** 555056599 +在参与开发之前,请先阅读 [『参与开发』](docs/参与开发.md) 文档。 -![QQ交流群](https://raw.githubusercontent.com/wangerzi/layui-excel/master/qq_group_qrcode.png) - - - -#### 赞赏二维码 - -赞赏时可以备注寄语,我会不时更新到『[赞赏列表](https://github.com/wangerzi/layui-excel/blob/master/reward.md)』中 - -![功能演示](https://raw.githubusercontent.com/wangerzi/layui-excel/master/reward_qrcode.png) - -## 依赖的开源项目 - -| 开源项目名称 | 地址 | 用于 | -| -------------------------------------------------------- | ------------------------------------------------------------ | ------------------------------ | -| [SheetJS / js-xlsx](https://github.com/SheetJS/js-xlsx) | [https://github.com/SheetJS/js-xlsx](https://github.com/SheetJS/js-xlsx) | 导出的基础逻辑 | -| [protobi / js-xlsx](https://github.com/protobi/js-xlsx) | [https://github.com/protobi/js-xlsx](https://github.com/protobi/js-xlsx) | 可以设置样式,用于补全样式功能 | -| [FileSaver.js](https://github.com/eligrey/FileSaver.js/) | [https://github.com/eligrey/FileSaver.js/](https://github.com/eligrey/FileSaver.js/) | 前端用于保存文件的JS功能组件 | -| [Blob.js](https://github.com/eligrey/Blob.js/) | [https://github.com/eligrey/Blob.js/](https://github.com/eligrey/Blob.js/) | Blob在IE10中的hack实现 | -| [polyfill.js](https://github.com/philipwalton/polyfill/) | [https://github.com/philipwalton/polyfill/](https://github.com/philipwalton/polyfill/) | 有名的IE兼容插件 | -| [shim.js](https://github.com/es-shims/es5-shim) | [https://github.com/es-shims/es5-shim](https://github.com/es-shims/es5-shim) | xlsx.js内置的兼容组件,支持ES5 | - -> 注:魔改 js-xlsx 支持样式的具体细节请见博客:[JeffreyWang的个人博客:令最新JS-XLSX支持样式的改造方法](https://blog.wj2015.com/2019/05/01/js-xlsx%E6%94%AF%E6%8C%81%E6%A0%B7%E5%BC%8F/) - -## 贡献DEMO介绍 - -| 路径 | 描述 | 贡献人 | -| ------------------------------------------------------------ | ------------------------- | -------------------------- | -| [demos/tableExport/index.html](http://excel.wj2015.com/demos/tableExport/index.html) | 导出表格数据的DEMO | 雨桐(yuton.yao@qq.com) | -| [demos/noLayui/index.html](http://excel.wj2015.com/demos/noLayui/index.html) | 非LAYUI调用及原生表格导出 | 藏锋入鞘(admin@wj2015.com) | -| [demos/borderExport/index.html](http://excel.wj2015.com/demos/borderExport/index.html) | 便捷边框设置DEMO | 藏锋入鞘(admin@wj2015.com) | -| [demos/iframeExport/index.html](http://excel.wj2015.com/demos/iframeExport/index.html) | iframe子页面调用导出 | 藏锋入鞘(admin@wj2015.com) | - -## 期望收集 - - -- [x] 支持导出到IE、Firefox(社区:[TeAmo](https://fly.layui.com/u/2297904/)) -- [x] 梳理数据函数支持列合并(社区:[SoloAsural](https://fly.layui.com/u/10405920/)) -- [x] 支持Excel内列合并(社区:[SoloAsural](https://fly.layui.com/u/10405920/)) -- [x] 优化大量数据导出,比如~~100W~~45W(社区:[Th_omas](https://fly.layui.com/u/28037520/)) -- [x] 支持Excel样式设置(魔改xlsx-style后支持设置列宽行高和单元格样式)(社区:[锁哥](https://fly.layui.com/u/17116008/)) -- [x] 支持公式、链接等特殊属性(个人、社区:[快乐浪子哥](https://fly.layui.com/u/46872/)) -- [x] 可以读取Excel内容(个人) -- [x] 支持一个Excel导出多个sheet(个人、社区:[玛琳菲森 ](https://fly.layui.com/u/29272992/)) -- [x] 批量设置样式(个人、交流群:limin) -- [x] 边框设置的样例(交流群:limin) -- [x] layui上传文件的样例(交流群:睡不够先森) -- [x] 替换官方的导出功能(社区:[yutons](https://fly.layui.com/u/5932248/)) -- [ ] 分段上传辅助函数(交流群:忘了名字) -- [ ] 获取一定范围的EXCEL数据导入辅助(交流群:忘了名字) -- [x] 导入时间转换函数(交流群:你〃祗是莪命中的過客つ) -- [x] 通过改造xlsx.js彻底解决数字0不显示的问题([tanzx](https://github.com/tanzx)) -- [x] 导出压缩功能引入(交流群:你〃祗是莪命中的過客つ) -- [ ] 分段导出时候的自动打包ZIP(交流群:一直被遗忘▼) -- [x] 页边距调整(交流群:你〃祗是莪命中的過客つ) -- [x] 支持非layui框架调用(交流群:忘了名字) - - -## BUG收集 - -- [x] QQ浏览器MIME-TYPE 无法读取(交流群:三小) -- [x] 导出xls实际类型不一致问题(交流群:背后的故事†) -- [x] 导入日期处理(交流群:雨桐) -- [x] 导出;导致区分cell的问题 -- [x] 导入的range参数传递问题 -- [x] 直接传入数字0,单元格不显示的问题 -- [x] 使用for in 带来的某些兼容问题 - -## 路径说明 - -| 路径 | 描述 | -| ----------------------- | ------------------------------ | -| index.html | 页面文件 | -| list.json | 模拟导出的数据 | -| layui_exts/excel.js | excel扩展(未压缩 - 便于调试) | -| layui_exts/excel.min.js | excel扩展(压缩后 - 减少体积) | -| layui/ | 官网下载的layui | -| demos/ | 网友上传的使用的样例 | -| src/ | 打包前的依赖和源码 | - -## 快速上手 - -> 由于插件规模扩大和功能的增加,导致插件上手难度有一定的增加。但如果只使用核心功能,其实没有必要去研究插件的所有方法,故在此把此插件解决核心需求的方法展示出来。 - -#### 试一试:一句话导出 Hello World - -> 在 [http://excel.wj2015.com](http://excel.wj2015.com) 下按 F12 弹出 console 调试工具,然后在里边输入如下命令,下载完毕后打开看到如下结果就说明成功了 - -```javascript -LAY_EXCEL.exportExcel([['Hello', 'World', '!']], 'hello.xlsx', 'xlsx') -``` - -![1566996326664](assets/1566996326664.png) - -PS:这个就是核心的导出功能,第一个参数是一个二维数组,第二个参数是导出文件名,第三个参数是文件类型,是不是特别简洁,有一定JS基础的童鞋相信一眼就能看懂!下面继续介绍如何与 AJAX 结合,导出后端给到的数据。 - -#### 第一步:从后台获取需要导出的数据 - -> 一般的导出场景是后端给出获取数据的接口,前端请求后端接口后,根据接口返回参数导出,所以需要 $.ajax() 异步请求接口数据 - -```javascript -$.ajax({ - url: '/path/to/get/data', - dataType: 'json', - success: function(res) { - // 假如返回的 res.data 是需要导出的列表数据 - console.log(res.data);// [{name: 'wang', age: 18}, {name: 'layui', age: 3}] - } -}); -``` - -#### 第二步:下载源码并引入插件 - -如果使用 `layuiadmin`,则只需要将插件(`layui_exts/excel.js`)放到 `controller/`下,然后 `layui.use` 即可,或者可以放在 `lib/extend` 中,只不过需要改 `config.js` - -Layui项目,非 `layuiadmin` 的插件初始化如下: - -```javascript -layui.config({ - base: 'layui_exts/', -}).extend({ - excel: 'excel', -}); -``` - -**PS:现已支持直接引入JS文件的方式加载插件,然后通过 LAY_EXCEL 全局变量调用相关函数了,非LAYUI或者不熟悉LAYUI的插件加载机制的童鞋可以在HTML文件中通过 script 标签引入,如:** - -```html - - - - - - -``` - -#### 第三步:手工添加一个表头,并调用导出excel的内部函数 - -> 非layui框架请直接使用 $.ajax 和 LAY_EXCEL 进行异步操作和导出 - -```javascript -layui.use(['jquery', 'excel', 'layer'], function() { - var $ = layui.jquery; - var excel = layui.excel; - $.ajax({ - url: '/path/to/get/data', - dataType: 'json', - success: function(res) { - // 假如返回的 res.data 是需要导出的列表数据 - console.log(res.data);// [{name: 'wang', age: 18, sex: '男'}, {name: 'layui', age: 3, sex: '女'}] - // 1. 数组头部新增表头 - res.data.unshift({name: '用户名',sex: '男', age: '年龄'}); - // 2. 如果需要调整顺序,请执行梳理函数 - var data = excel.filterExportData(res.data, [ - 'name', - 'sex', - 'age', - ]); - // 3. 执行导出函数,系统会弹出弹框 - excel.exportExcel({ - sheet1: data - }, '导出接口数据.xlsx', 'xlsx'); - } - }); -}); -``` - - - -## 接口设计和后台程序参考 - -完善中.... - -## 函数列表 - -> 仅做函数用途介绍,具体使用方法请见 『重要函数参数配置』 - -| 函数名 | 描述 | 索引 | -| --------------------------------------------------- | ----------------------------------------------------------- | ------------------------------------------------------------ | -| **exportExcel(data, filename, type, opt)** | 导出数据,并弹出指定文件名的下载框 | [exportExcel参数配置](#exportexcel%E5%8F%82%E6%95%B0%E9%85%8D%E7%BD%AE) | -| downloadExl(data, filename, type) | 快速导出excel,无需指定 sheet_name 和文件后缀 | [downloadExl参数配置](#downloadexl%E5%8F%82%E6%95%B0%E9%85%8D%E7%BD%AE) | -| **filterExportData(data, fields)** | 梳理导出的数据,包括字段排序和多余数据 | [filterExportData参数配置](#filterexportdata%E5%8F%82%E6%95%B0%E9%85%8D%E7%BD%AE) | -| **importExcel(files, opt, callback)** | 读取Excel,支持多文件多表格读取 | [importExcel参数配置](#importexcel%E5%8F%82%E6%95%B0%E9%85%8D%E7%BD%AE) | -| **makeMergeConfig(origin)** | 生成合并的配置参数,返回结果需放置于opt.extend['!merges']中 | [makeMergeConfig参数配置](#makemergeconfig%E5%8F%82%E6%95%B0%E9%85%8D%E7%BD%AE) | -| **setExportCellStyle(data, range, config, filter)** | 为sheet级别数据批量设置单元格属性 | [setExportCellStyle参数配置](#setExportCellStyle%E5%8F%82%E6%95%B0%E9%85%8D%E7%BD%AE) | -| makeColConfig(data, defaultNum) | 生成列宽配置,返回结果需放置于opt.extend['!cols']中 | [makeColConfig参数配置](#makecolconfig%E5%8F%82%E6%95%B0%E9%85%8D%E7%BD%AE) | -| makeRowConfig(data, defaultNum) | 生成行高配置,返回结果需放置于opt.extend['!rows'] | [makeRowConfig参数配置](#makerowconfig%E5%8F%82%E6%95%B0%E9%85%8D%E7%BD%AE) | -| tableToJson(dom) | 将原生table转换为JSON格式 | [tableToJson参数配置](#tabletojson%E5%8F%82%E6%95%B0%E9%85%8D%E7%BD%AE) | -| **setRoundBorder(data, range ,config)** | 设置范围环绕的边框 | [setRoundBorder参数配置](#setRoundBorder%E5%8F%82%E6%95%B0%E9%85%8D%E7%BD%AE) | -| dateCodeToDate(code) | EXCEL日期码转换为Date对象 | [dateCodeToDate参数配置](#dateCodeToDate%E5%8F%82%E6%95%B0%E9%85%8D%E7%BD%AE) | -| dateFormat(date, format) | Date 对象格式化 | [dateFormat参数配置](#dateFormat%E5%8F%82%E6%95%B0%E9%85%8D%E7%BD%AE) | -| dateCodeFormat(code, format) | EXCEL日期码转换为格式化字符串 | [dateCodeFormat参数配置](#dateCodeFormat%E5%8F%82%E6%95%B0%E9%85%8D%E7%BD%AE) | -| filterDataToAoaData(sheet_data) | 将单个sheet的映射数组数据转换为加速导出效率的aoa数据 | 无 | -| filterImportData(data, fields) | 梳理导入的数据,字段含义与 filterExportData 类似 | 无 | -| numToTitle(num) | 将1/2/3...转换为A/B/C/D.../AA/AB/.../ZZ/AAA形式 | 无 | -| titleToNum(title) | 将A、B、AA、ABC转换为 1、2、3形式的数字 | 无 | -| splitPosition(pos) | 将A1分离成 {c: 0, r: 1} 格式的数据 | 无 | - -## 重要函数参数配置 - -#### exportExcel参数配置 - -> 核心方法,用于将 data 数据依次导出,如果需要调整导出后的文件字段顺序或者过滤多余数据,请查看 filterExportData 方法 - -| 参数名称 | 描述 | 默认值 | -| -------- | ------------------------------------------------ | ------ | -| data | 数据列表(需要指定表名) | 必填 | -| filename | 文件名称(带后缀) | 必填 | -| type | 导出类型,支持 xlsx、csv、ods、xlsb、fods、biff2 | xlsx | -| opt | 其他可选配置 | null | - -##### data样例: - -```javascript -{ - "sheet1": [ - {name: '111', sex: 'male'}, - {name: '222', sex: 'female'}, - ] -} -``` - -##### opt支持的配置项 - -| 参数名称 | 描述 | 默认值 | -| --------------- | ------------------------------------------------------------ | ------ | -| opt.Props | 配置文档基础属性,支持Title、Subject、Author、Manager、Company、Category、Keywords、Comments、LastAuthor、CreatedData | null | -| opt.extend | 表格配置参数,支持 `!merge` (合并单元格信息)、`!cols`(行数)、`!protect`(写保护)等,[原生配置请参考](https://github.com/SheetJS/js-xlsx#worksheet-object),其中 `!merge` 配置支持辅助方法生成,详见 `makeMergeConfig(origin)`! | null | -| opt.compression | 是否压缩,压缩效果比较明显,建议开启(9列9w行有较多重复的数据,从 30M 缩小到 3M) | true | - -> 如果想指定某个 sheet 的opt.extend,请按照 'sheet名称' => {单独配置},如: - -```javascript -excel.exportExcel({ - sheet1: data, - sheet2: data -}, '测试导出复杂表头.xlsx', 'xlsx', { - extend: { - // extend 中可以指定某个 sheet 的属性,如果不指定 sheet 则所有 sheet 套用同一套属性 - sheet1: { - // 以下配置仅 sheet1 有效 - '!merges': mergeConf - ,'!cols': colConf - ,'!rows': rowConf - } - } -}); -``` - -#### downloadExl参数配置 - -> 兼容旧用法,用于快速导出数据,无需指定 sheet_name,无需指定后缀名,其余跟 `exportExcel` 用法相同。 - -| 参数名称 | 描述 | 默认值 | -| -------- | -------------------------------- | ------ | -| data | 导出的数据 | | -| filename | 不带后缀名的文件名 | | -| type | 导出类型(自动拼接在filename后) | | - -#### filterExportData参数配置 - -> 辅助方法,梳理导出的数据,包括字段排序和多余数据过滤 - -| 参数名称 | 描述 | 默认值 | -| -------- | ------------------------------------------------ | ------ | -| data | 需要梳理的数据 | 必填 | -| fields | 支持数组、对象和回调函数,用于映射关系和字段排序 | 必填 | - -> fields参数设计 - -在实际使用的过程中,后端给的参数多了,或者字段数据不符合导出要求,这都是很常见的情况。为了导出数据的顺序正确和数据映射正确,于是新增了这个方法。 - -fields 用于表示对象中的属性顺序和映射关系,支持『数组』和『对象』两种方式 - -假如后台给出了这样的数据: - -```json -{ - "code":0, - "msg":"", - "count":3, - "data":[ - { - "id":10000, - "username":"user-0", - "sex":"女", - "city":"城市-0", - "sign":"签名-0", - "experience":255, - "logins":24, - "wealth":82830700, - "classify":"作家", - "score":57, - "start": "2018-12-29", - "end": "2018-12-30" - } - ] -} -``` - -**数组方式:** - -仅用于排序、字段过滤,比如我希望的导出顺序和字段是: - -`id`、`sex`、`username`、`city` - -那么,我可以这样写: - -```javascript -var data = [];// 假设的后台的数据 -data = excel.filterExportData(data, ['id', 'sex', 'username', 'city']); -excel.exportExcel(data, '导出测试.xlsx', 'xlsx'); -``` - -**对象方式:** - -> 巧记:对象左侧是新名称,右侧是老名称或者回调函数(左新右旧) - -可以用于排序、重命名字段、字段过滤,比如我希望 `username` 字段重命名为 `name`,保留 `sex` 和 `city` 字段 - -那么,我可以这样写: - -```javascript -var data = [];// 假设的后台的数据 -data = excel.filterExportData(data, { - name: 'username', - sex:'sex', - city: 'city' -}); -excel.exportExcel(data, '导出测试.xlsx', 'xlsx'); -``` - -##### 回调方式: - -> 口诀:左新右旧 - -可以用于排序、重命名字段、字段过滤、自定义列、批量渲染样式,比如我希望 `range` 由 `start` `end` 聚合并以 `~` 分割;修改 `score` 为原有值的 10倍,并且 `username` 字段重命名为 `name`,保留 `sex` 和 `city` 字段,`city` 所有单元格变为**加粗+居中+红底白字**(可用样式请参见『样式设置专区』)。 - -那么,我可以这样写: - -```javascript -var data = [];// 假设的后台的数据 -data = excel.filterExportData(data, { - name: 'username', - sex:'sex', - city: function(value, line, data) { - return { - v: value,// v 代表单元格的值 - s:{// s 代表样式 - alignment: { - horizontal: 'center', - vertical: 'center', - }, - font: { sz: 14, bold: true, color: { rgb: "FFFFFF" } }, - fill: { bgColor: { indexed: 64 }, fgColor: { rgb: "FF0000" }} - }, - }; - }, - range: function(value, line, data) { - return line['start'] + '~' + line['end']; - }, - score: function(value, line, data) { - return value * 10; - } -}); -excel.exportExcel(data, '导出测试.xlsx', 'xlsx'); -``` - -##### 单元格属性含义 - -| Key | Description | -| ---- | ------------------------------------------------------------ | -| `v` | 单元格的值 | -| `w` | 格式化文本(如果适用) | -| `t` | 单元格类型: `b` 布尔值, `n` 数字, `e` 错误, `s` 字符, `d` 日期 | -| `f` | 单元格公式(如果适用) | -| `r` | 富文本编码(如果适用) | -| `h` | 富文本的HTML呈现(如果适用) | -| `c` | 与单元格相关的注释 | -| `z` | 与单元格关联的数字格式字符串(如果需要) | -| `l` | 单元格超链接对象(目标链接,.tooltip是提示) | -| `s` | 单元格的样式/主题(如果适用) | - -##### 公式设置样例: - -> 注意:网页导出的xlsx,在 Microsoft Excel 呈保护模式打开,导致公式的值不显示,此时将受保护模式关掉即可! - -对于复杂的公式,楼主也不甚了解,以普通公式 `=SUM(A1, A10)` 为例,在插件中只需要将单元格的属性设置为:`{t: 'n', f: 'SUM(A1:A10)'}`,比如我想加一个总览行就可以这样追加数据: - -```javascript -// 4. 公式的用法 -data.push({ - id: '', - username: '总年龄', - age: {t: 'n', f: 'SUM(C4:C10)'}, - sex: '总分', - score: {t: 'n', f: 'SUM(E4:E10)'}, - classify: '' -}); -``` - -官方公式相关文档:[https://github.com/SheetJS/js-xlsx#formulae](https://github.com/SheetJS/js-xlsx#formulae) - -#### setExportCellStyle参数配置 - -> 辅助方法:为 sheet 级别的数据批量设置单元格属性 - -| 参数名称 | 描述 | 默认值 | -| -------- | ------------------------------------------------------------ | ------------------------ | -| data | sheet级别的数据 | | -| range | 范围字符串,比如`" A1:C12"`表示开始位置默认 A1,结束位置C12 | 数据范围内左上角到右下角 | -| config | 批量设置的单元格属性,会与之前的样式合并 | | -| filter | 回调函数,传递函数生效,返回值作为新的值(可用于过滤、规则替换样式等骚操作)**『非必填参数』** | | - -##### filter入参列表 - -> 此参数选填,如果不传入则直接按照规则覆盖 - -| 参数名称 | 描述 | -| ---------- | ---------------------------------------- | -| cell | 原有单元格数据 | -| newCell | 根据批量设置规则自动生成样式的单元格数据 | -| row | 所在行数据 | -| config | 传入的配置 | -| currentCol | 当前列索引 | -| fieldKey | 当前字段key | - -##### 调用样例(更多用法可参考 index.js 中的样例) - -```javascript -// 1. 假设的梳理后的后台的数据(省略filter函数梳理) -var data = [ - { username: '520',sex: '男', city: 'J', 'score': 100, 'start': '2019-03-11' }, - { username: '520',sex: '女', city: 'X', 'score': 100, 'start': '2019-03-11' }, - { username: '520',sex: '男', city: '上海', 'score': 100, 'start': '2019-03-11' } -]; -// 2. 调用设置样式的函数,传入设置的范围,支持回调 -excel.setExportCellStyle(data, 'A1:C3', { - s: { - fill: { bgColor: { indexed: 64 }, fgColor: { rgb: "FF0000" } }, - alignment: { - horizontal: 'center', - vertical: 'center' - } - } -}, function(cell, newCell, row, config, currentRow, currentCol, fieldKey) { - // 回调参数,cell:原有数据,newCell:根据批量设置规则自动生成的样式,row:所在行数据,config:传入的配置,currentRow:当前行索引,currentCol:当前列索引,fieldKey:当前字段索引 - return ((currentRow + currentCol) % 2 === 0) ? newCell : cell;// 隔行隔列上色 -} ); -// 3. 导出数据 -excel.exportExcel(data, '批量设置样式.xlsx', 'xlsx'); -``` - -#### setRoundBorder参数配置 - -> 辅助方法:设置范围内环绕的边框 - -| 参数名称 | 描述 | 默认值 | -| -------- | ------------------------------------------------------------ | --------------------------------------------- | -| data | Sheet级别的数据 | [] | -| range | 范围字符串,如 A1:C12,默认从左上角到右下角 | "A1:C12" | -| config | border 上下左右属性配置信息(对角线的三个属性被下放到left/right/top/bottom下) | {top: {xxx}, bottom: {}, left: {}, right: {}} | - -##### 调用样例 - -```javascript -LAY_EXCEL.setRoundBorder(list, 'A1:C2', { - top: {style: 'thick', color: {rgb: 'FFFF0000'}}, - bottom: {style: 'thick', color: {rgb: 'FFFF0000'}}, - left: {style: 'thick', color: {rgb: 'FFFF0000'}}, - right: {style: 'thick', color: {rgb: 'FFFF0000'}} -}); -``` - -#### makeMergeConfig参数配置 - -> 辅助方法:用于生成合并表格的配置项,注意需要传入到 exportExcel 的 opt.extend['!merge'] 中 - -| 参数名称 | 描述 | 默认值 | -| -------- | -------- | ------ | -| origin | 二维数组 | null | - -##### origin数据样例 - -> 表示合并 A1~E1 行,并且合并 A2~D4行 - -```javascript -var mergeConf = excel.makeMergeConfig([ - ['A1', 'E1'], - ['A2', 'D4'] -]); -excel.exportExcel({ - sheet1: data -}, '测试导出复杂表头.xlsx', 'xlsx', { - extend: { - // 复杂表头合并[A1,E1][A2, D4] - '!merges': mergeConf - } -}); -``` - -##### 调用样例 - -请见下方『使用方法』 - -#### makeColConfig参数配置 - -> 辅助方法:生成列宽配置,返回结果需放置于opt.extend['!cols']中 - -| 参数名称 | 描述 | 默认值 | -| ---------- | ----------------------------------------------------- | ------ | -| data | 一个对象,对象的key代表列(如:ABCDE),value代表宽度 | null | -| defaultNum | 渲染过程中未指定单元格的默认宽度 | 60 | - -##### 使用样例 - -> key表示列,value表示宽,剩余宽度取默认值,特别注意要放在 opt.extend['!cols'] 中 - -```javascript -// 意思是:A列40px,B列60px(默认),C列120px,D、E、F等均未定义 -var colConf = excel.makeColConfig({ - 'A': 40, - 'C': 120 -}, 80); -excel.exportExcel({ - sheet1: data -}, '测试导出复杂表头.xlsx', 'xlsx', { - extend: { - '!cols': colConf - } -}); -``` - -#### makeRowConfig参数配置 - -> 辅助方法:生成列宽配置,返回结果需放置于opt.extend['!rows']中 - -| 参数名称 | 描述 | 默认值 | -| ---------- | ------------------------------------------------------------ | ------ | -| data | 一个对象,对象的key代表从1开始的行(如:1234),value代表高度 | null | -| defaultNum | 渲染过程中未指定单元格的默认宽度 | 60 | - -##### 使用样例 - -> key表示行,value表示高度,剩余高度取默认值,特别注意要放在 opt.extend['!rows'] 中 - -```javascript -// 意思是:1行40px,2行60px(默认),3行120px,4/5/6/7等行均未定义 -var rowConf = excel.makeRowConfig({ - 1: 40, - 3: 120 -}, 80); -excel.exportExcel({ - sheet1: data -}, '测试导出复杂表头.xlsx', 'xlsx', { - extend: { - '!rows': rowConf - } -}); -``` - -#### importExcel参数配置 - -> 核心方法,用于读取用户选择的Excel信息,文件读取基于 FileReader,所以对浏览器版本要求较高 - -| 参数名称 | 描述 | 默认值 | -| -------- | ------------------------------------------------------------ | --------- | -| files | 上传文件DOM对象的 files 属性 | undefined | -| opt | 导出参数配置,详见下方描述 | undefined | -| callback | 完全读取完毕的回调函数,传入一个参数「data」表示所有数据的集合 | undefined | - -##### opt参数配置 - -| 参数名称 | 描述 | 默认值 | -| -------- | ------------------------------------------------------------ | ------ | -| header | 导入参数的headers,支持"A"、1等,[详见XLSX官方文档](https://github.com/SheetJS/js-xlsx#json) | A | -| range | 读取的范围,支持数字、字符等,[详见XLSX官方文档](https://github.com/SheetJS/js-xlsx#json) | null | -| fields | 可以在读取的过程中进行数据梳理,参数意义请参见「filterExportData参数配置」 | null | - -> 由于处理过程中会抛出一些异常,所以请使用 try{}catch(e){}接收并提示用户! -> -> 如果对导出数据格式的键不满意,可以有两种方式梳理: -> -> 1. 调用 filterImportData(data, fields) -> 2. 直接在 importExcel() 的 opt 配置中进行数据梳理 - -##### 调用样例 - -```javascript -$(function(){ - // 监听上传文件的事件 - $('#LAY-excel-import-excel').change(function(e) { - var files = e.target.files; - try { - // 方式一:先读取数据,后梳理数据 - excel.importExcel(files, {}, function(data) { - console.log(data); - data = excel.filterImportData(data, { - 'id': 'A' - ,'username': 'B' - ,'experience': 'C' - ,'sex': 'D' - ,'score': 'E' - ,'city': 'F' - ,'classify': 'G' - ,'wealth': 'H' - ,'sign': 'I' - }) - console.log(data); - }); - // 方式二:可以在读取过程中梳理数据 - excel.importExcel(files, { - fields: { - 'id': 'A' - ,'username': 'B' - ,'experience': 'C' - ,'sex': 'D' - ,'score': 'E' - ,'city': 'F' - ,'classify': 'G' - ,'wealth': 'H' - ,'sign': 'I' - } - }, function(data) { - console.log(data); - }); - } catch (e) { - layer.alert(e.message); - } - }); -}); -``` - -#### tableToJson参数配置 - -> 辅助方法:将原生DOM的表格转换为JSON形式的数据 - -##### 传入参数 - -| 参数名称 | 描述 | 默认值 | -| -------- | ------------------------------- | ------ | -| dom | 原生表格的DOM对象或者jQuery对象 | null | - -##### 返回参数 - -| 参数名称 | 类型 | 描述 | -| -------- | ----- | ------------------ | -| head | array | 表格头部的数组数据 | -| body | array | 表格body的数组数据 | - -##### 使用样例 - -> head是头部数据,body是尾部数据,使用 arr1.push.apply(arr, arr2) 可以合并数组 - -```javascript -// 获取头部和body -var data = LAY_EXCEL.tableToJson(document.getElementById('LAY-EXPORT-TEST')) // 或者 $('#LAY-EXPORT-TEST') -// console.log(data) -var exportData = [] -exportData.push.apply(exportData, data.head) -exportData.push.apply(exportData, data.body) -// console.log(exportData) - -LAY_EXCEL.exportExcel(exportData, '表格导出.xlsx', 'xlsx') -``` - -### EXCEL时间处理相关函数 - -> 时间在 Excel 中以数字的形式存在,具体意义是与 1990-01-01 00:00:00 相比的第几天,比如 1990-01-01 00:00:00 就存为1,1990-01-02 00:00:00 就存为2。为方便操作,插件提供了对应辅助方法:dateCodeFormat('存储的数字', '格式') 、dateFormat('Date对象', '格式')、dateCodeToDate('存储的数字') 方便操作。 - -#### dateCodeToDate参数配置 - -> 辅助方法:用于将EXCEL中的时间数字转换为 Date 对象 - -##### 传入参数 - -| 参数名称 | 描述 | 默认值 | -| -------- | --------------------- | ------ | -| code | EXCEL中存储的时间数字 | | - -##### 返回参数 - -转换过后的Date对象 - -##### 使用样例 - -```javascript -var date = LAY_EXCEL.dateCodeToDate(43737.54167824074) -console.log(date); // Sun Sep 29 2019 13:00:01 GMT+0800 (中国标准时间) -``` - -#### dateCodeFormat参数配置 - -> 辅助方法:用于将EXCEL中的时间数字转换为对应格式的时间字符串 - -##### 传入参数 - -| 参数名称 | 描述 | 默认值 | -| -------- | --------------------- | ------------------- | -| code | EXCEL中存储的时间数字 | | -| format | 日期格式 | YYYY-MM-DD HH:ii:ss | - -##### 返回参数 - -转换后的字符串 - -##### 支持的替换参数 - -可以将 format 中的字符串转换为特定含义的数字 - -| 替换参数 | 含义 | -| -------- | --------------------- | -| YY | 二位数的年 | -| YYYY | 四位数的年 | -| MM | 二位数的月(补全0) | -| M | 自然数的月(不补全0) | -| DD | 二位数的日(补全0) | -| D | 自然数的日 | -| HH | 二位数的时(补全0) | -| H | 自然数的时 | -| ii | 二位数的分 | -| i | 自然数的分 | -| ss | 二位数的秒 | -| s | 自然数的秒 | - -##### 使用样例 - -```javascript -var date = LAY_EXCEL.dateCodeFormat(43737.54167824074, 'YYYY-MM-DD HH:ii:ss') -console.log(date) // "2019-08-00 13:00:01" -``` - -#### dateFormat参数配置 - -> 辅助方法:用于将Date对象转换为对应格式的时间字符串 - -##### 传入参数 - -| 参数名称 | 描述 | 默认值 | -| -------- | -------- | ------------------- | -| date | Date对象 | | -| format | 日期格式 | YYYY-MM-DD HH:ii:ss | - -##### 返回参数 - -转换后的字符串 - -##### 支持的替换参数 - -与上文相同 - -##### 使用样例 - -```javascript -var date = LAY_EXCEL.dateCodeFormat(new Date(), 'YYYY-MM-DD HH:ii:ss') -console.log(date) // "2019-09-04 22:39:25" -``` - -## 样式设置专区: - -#### s属性支持的单元格样式 - -| 样式属性 | 子属性 | 取值 | -| :-------------- | :------------- | :------------- | -| fill | patternType | `"solid"` or `"none"`| -| | fgColor | `COLOR_SPEC` | -| | bgColor | `COLOR_SPEC`| -| font | name | `"Calibri"` // 默认字体 | -| | sz | `"11"` // 字体大小 | -| | color | `COLOR_SPEC`| -| | bold | `true` or `false`| -| | underline | `true` or `false`| -| | italic | `true` or `false`| -| | strike | `true` or `false`| -| | outline | `true` or `false`| -| | shadow | `true` or `false`| -| | vertAlign | `true` or `false`| -| numFmt | | `"0"` // 内置格式的整数索引,请参见StyleBuilder.SSF属性 | -| | | `"0.00%"` // 匹配内置格式的字符串,请参阅StyleBuilder.SSF | -| | | `"0.0%"` // 指定自定义格式的字符串 | -| | | `"0.00%;\\(0.00%\\);\\-;@"` // 指定自定义格式的字符串,转义特殊字符 | -| | | `"m/dd/yy"` // 使用Excel的格式表示法字符串日期格式 | -| alignment | vertical | `"bottom"` or `"center"` or `"top"`| -| | horizontal | `"bottom"` or `"center"` or `"top"`| -| | wrapText | `true ` or ` false` // 自动换行 | -| | readingOrder | `2` // 从右到左 | -| | textRotation | 从 `0` 到 `180` 或者 `255` (默认为 `0`) | -| | | `90` 旋转90度 | -| | | `45` 旋转45度 | -| | | `135` 反向旋转45度 | -| | | `180` 旋转180度 | -| | | `255` 特殊:垂直对齐 | -| border | top | `{ style: BORDER_STYLE, color: COLOR_SPEC }`| -| | bottom | `{ style: BORDER_STYLE, color: COLOR_SPEC }`| -| | left | `{ style: BORDER_STYLE, color: COLOR_SPEC }`| -| | right | `{ style: BORDER_STYLE, color: COLOR_SPEC }`| -| | diagonal | `{ style: BORDER_STYLE, color: COLOR_SPEC }`| -| | diagonalUp | `true` or `false`| -| | diagonalDown | `true` or `false`| - -**COLOR_SPEC**: 可以设置在 `fill`, `font`, 和 `border` 属性中,是一个对象: - -* `{ auto: 1}` 指定自动值(楼主认为,应该是默认为白色的意思) -* `{ rgb: "FFFFAA00" }` 指定16进制 ARGB 的值(PS:ARGB,前两个16进制是透明度,比如不透明红色:FFFF0000) -* `{ theme: "1", tint: "-0.25"}` 指定主题颜色和色调值的整数索引(默认值为0)(PS:楼主也明白嘛意思) -* `{ indexed: 64}` 是 `fill.bgColor`属性的默认值,看着应该像索引之类的 - -**BORDER_STYLE**: 边框支持以下几种样式: - - * `thin`(细边框) - * `medium`(中等) - * `thick`(厚) - * `dotted`(点线) - * `hair`(毛) - * `dashed`(虚线) - * `mediumDashed`(中等宽度虚线) - * `dashDot`( 点) - * `mediumDashDot`(中等宽度点) - * `dashDotDot`(虚线带点) - * `mediumDashDotDot`(中等虚线带点) - * `slantDashDot`(倾斜虚线点--楼主也没明白啥意思╮(╯▽╰)╭) - -##### 合并区域边框 - -合并区域的边框是为合并区域内的每个单元格指定的。因此,要将框边框应用于3x3单元格的合并区域,需要为八个不同的单元格指定边框样式: - -* 左边三个单元格的左边框, -* 右侧三个单元格的右边框 -* 顶部单元格的顶部边框 -* 左侧单元格的底部边框 - -## 提效建议: - -> 数据规模:前端导出**纯数据 9列10w** 的数据量需要 **7秒左右**的时间,**30W数据占用1.8G,耗时24秒**,普通电脑**最多能导出50w数据,耗时45秒**,文件大小173M,提示内存超限 - -- 如果数据量比较大,**并且不涉及样式**,最好直接转换为纯数组+CSV的导出,可以省去 filterExportData 和 组装样式的时间和内存(PS:效率提升不算太大,30W数据能提速2s左右,资源主要消耗在调用 XLSX.js之后) -- 一般 exportExcel 会放在 $.ajax() 等异步调用中,如果有需要在点击后纯前端生成Excel,可以使用 async、setTimeout等方式实现异步导出,否则会阻塞主进程。 - -## 功能概览: - -- 支持梳理导出的数据并导出多种格式数据 -- 支持IE、火狐、chrome等主流浏览器 -- 普通工作电脑最多支持9列45W行数据规模的导出 -- 支持 xlx、xlsx、csv格式的前端数据读取以及数据梳理 -- 支持单个文件多个 sheet 的导出 -- 提供方便的列合并辅助方法 -- 支持单元格样式设置 -- 支持设置单元格宽度和高度并提供辅助方法方便使用 -- 支持公式、链接等单元格属性设置 -- 支持压缩,支持设置边距 - -## 使用方法: - -> 注意:此扩展需先引入layui.js方可正常使用。demo详见index.html - -##### js使用样例: - -```javascript -// 注:lay_exts/ 为扩展中所有文件的存放路径 -layui.config({ - base: 'lay_exts/', -}).extend({ - excel: 'excel', -}); -layui.use(['jquery', 'excel', 'layer'], function() { - var $ = layui.jquery; - var layer = layui.layer; - var excel = layui.excel; - - // 模拟从后端接口读取需要导出的数据 - $.ajax({ - url: 'list.json' - ,dataType: 'json' - ,success(res) { - var data = res.data; - // 重点!!!如果后端给的数据顺序和映射关系不对,请执行梳理函数后导出 - data = excel.filterExportData(data, [ - 'id' - ,'username' - ,'experience' - ,'sex' - ,'score' - ,'city' - ,'classify' - ,'wealth' - ,'sign' - ]); - // 重点2!!!一般都需要加一个表头,表头的键名顺序需要与最终导出的数据一致 - data.unshift({ id: "ID", username: "用户名", experience: '积分', sex: '性别', score: '评分', city: '城市', classify: '职业', wealth: '财富', sign: '签名' }); - - var timestart = Date.now(); - excel.exportExcel(data, '导出接口数据', 'xlsx'); - var timeend = Date.now(); - - var spent = (timeend - timestart) / 1000; - layer.alert('单纯导出耗时 '+spent+' s'); - } - ,error() { - layer.alert('获取数据失败,请检查是否部署在本地服务器环境下'); - } - }); - }); -``` - -##### 导出数据返回样例: - -> 此数据来自 layui 官方的表格样例 - -```json -{ - "code":0, - "msg":"", - "count":3, - "data":[ - { - "id":10000, - "username":"user-0", - "sex":"女", - "city":"城市-0", - "sign":"签名-0", - "experience":255, - "logins":24, - "wealth":82830700, - "classify":"作家", - "score":57 - }, - { - "id":10001, - "username":"user-1", - "sex":"男", - "city":"城市-1", - "sign":"签名-1", - "experience":884, - "logins":58, - "wealth":64928690, - "classify":"词人", - "score":27 - }, - { - "id":10002, - "username":"user-2", - "sex":"女", - "city":"城市-2", - "sign":"签名-2", - "experience":650, - "logins":77, - "wealth":6298078, - "classify":"酱油", - "score":31 - } - ] -} -``` - -## 更新预告: - -v1.7 分段递归获取数据函数封装,分段压缩打包功能,常见问题整理,单元测试覆盖,CI/CD - -## 更新记录: - -2019-10-03 v1.6 支持快速设置边框,支持压缩,支持CSV,支持边距设置,DEMO贡献模块,替换官方的导出功能,支持导出原生table,非Layui调用,导出时间转换,README文件优化 - -2019-03-11 v1.5 打包依赖方便使用并增加兼容性,支持花式设置样式,正式支持导入,修复各种BUG - -2019-01-13 v1.4 魔改xlsx-style以支持设置样式、列宽、行高、公式等,并提供相应的辅助方法生成需要的配置信息 - -2019-01-09 v1.3 支持导出多个sheet,合并导出的列 - -2019-01-04 v1.2 支持前端多文件多Sheet读取 Excel 数据并梳理数据格式,大量数据导出效率优化 +## 特别感谢 -2018-12-29 v1.1 重写内部下载逻辑,支持IE、Firefox、chrome等主流浏览器,梳理数据函数支持回调 +感谢layui社区的小伙伴们的使用及建议,还有交流群中反馈各种问题和积极回复问题的群友们,以及github上提ISSUE、PR的小伙伴们~ -2018-12-14 v1.0 最初版本 +## 开源协议 -## 特别感谢 +LAY-EXCEL is licensed under the Apache License, Version 2.0. See [LICENSE](https://github.com/GitbookIO/gitbook/blob/master/LICENSE) for the full license text. -感谢layui社区的小伙伴们的回复,以及交流群中反馈各种问题和积极回复问题的群友们,还有github上提ISSUE、PR的小伙伴们~ + \ No newline at end of file diff --git a/SUMMARY.md b/SUMMARY.md new file mode 100644 index 0000000..81937c6 --- /dev/null +++ b/SUMMARY.md @@ -0,0 +1,16 @@ +# Summary + +* [概览](README.md) + * [功能概览](docs/功能概览.md) + * [赞赏支持](docs/赞赏支持.md) + * [贡献DEMO](docs/贡献DEMO.md) + * [常见问题](docs/常见问题.md) + * [参与开发](docs/参与开发.md) + * [更新记录](docs/更新记录.md) +* [快速上手](docs/快速上手.md) +* [函数列表](docs/函数列表/README.md) + * [重要函数参数配置](docs/函数列表/重要函数参数配置.md) + * [EXCEL时间处理函数](docs/函数列表/EXCEL时间处理函数.md) +* [样式设置专区](docs/样式设置专区.md) +* [交流反馈](docs/交流反馈.md) + diff --git a/book.json b/book.json new file mode 100644 index 0000000..b1b943b --- /dev/null +++ b/book.json @@ -0,0 +1,37 @@ +{ + "author": "Jeffrey Wang ", + "description": "This is a doc created by gitbook", + "extension": null, + "generator": "site", + "isbn": "", + "links": { + "sharing": { + "all": null, + "facebook": null, + "google": null, + "twitter": null, + "weibo": null + }, + "sidebar": { + "作者博客": "https://blog.wj2015.com", + "功能演示": "http://excel.wj2015.com" + } + }, + "output": null, + "pdf": { + "fontSize": 12, + "footerTemplate": null, + "headerTemplate": null, + "margin": { + "bottom": 36, + "left": 62, + "right": 62, + "top": 36 + }, + "pageNumbers": false, + "paperSize": "a4" + }, + "plugins": [], + "title": "LAY-EXCEL 插件文档", + "variables": {} +} diff --git a/docs/assets/1566996326664.png b/docs/assets/1566996326664.png new file mode 100644 index 0000000..c5bd0b5 Binary files /dev/null and b/docs/assets/1566996326664.png differ diff --git "a/docs/\344\272\244\346\265\201\345\217\215\351\246\210.md" "b/docs/\344\272\244\346\265\201\345\217\215\351\246\210.md" new file mode 100644 index 0000000..f4a5a20 --- /dev/null +++ "b/docs/\344\272\244\346\265\201\345\217\215\351\246\210.md" @@ -0,0 +1,7 @@ +# 交流反馈 + +##### 作者邮箱:[admin@wj2015.com](mailto:admin@wj2015.com) + +**QQ群号:** 555056599 + +![QQ交流群](../qq_group_qrcode.png) \ No newline at end of file diff --git "a/docs/\345\207\275\346\225\260\345\210\227\350\241\250/EXCEL\346\227\266\351\227\264\345\244\204\347\220\206\345\207\275\346\225\260.md" "b/docs/\345\207\275\346\225\260\345\210\227\350\241\250/EXCEL\346\227\266\351\227\264\345\244\204\347\220\206\345\207\275\346\225\260.md" new file mode 100644 index 0000000..f0a0d64 --- /dev/null +++ "b/docs/\345\207\275\346\225\260\345\210\227\350\241\250/EXCEL\346\227\266\351\227\264\345\244\204\347\220\206\345\207\275\346\225\260.md" @@ -0,0 +1,93 @@ +# EXCEL时间处理函数 + +> 时间在 Excel 中以数字的形式存在,具体意义是与 1990-01-01 00:00:00 相比的第几天,比如 1990-01-01 00:00:00 就存为1,1990-01-02 00:00:00 就存为2。为方便操作,插件提供了对应辅助方法:dateCodeFormat('存储的数字', '格式') 、dateFormat('Date对象', '格式')、dateCodeToDate('存储的数字') 方便操作。 + +#### dateCodeToDate参数配置 + +> 辅助方法:用于将EXCEL中的时间数字转换为 Date 对象 + +##### 传入参数 + +| 参数名称 | 描述 | 默认值 | +| -------- | --------------------- | ------ | +| code | EXCEL中存储的时间数字 | | + +##### 返回参数 + +转换过后的Date对象 + +##### 使用样例 + +```javascript +var date = LAY_EXCEL.dateCodeToDate(43737.54167824074) +console.log(date); // Sun Sep 29 2019 13:00:01 GMT+0800 (中国标准时间) +``` + +#### dateCodeFormat参数配置 + +> 辅助方法:用于将EXCEL中的时间数字转换为对应格式的时间字符串 + +##### 传入参数 + +| 参数名称 | 描述 | 默认值 | +| -------- | --------------------- | ------------------- | +| code | EXCEL中存储的时间数字 | | +| format | 日期格式 | YYYY-MM-DD HH:ii:ss | + +##### 返回参数 + +转换后的字符串 + +##### 支持的替换参数 + +可以将 format 中的字符串转换为特定含义的数字 + +| 替换参数 | 含义 | +| -------- | --------------------- | +| YY | 二位数的年 | +| YYYY | 四位数的年 | +| MM | 二位数的月(补全0) | +| M | 自然数的月(不补全0) | +| DD | 二位数的日(补全0) | +| D | 自然数的日 | +| HH | 二位数的时(补全0) | +| H | 自然数的时 | +| ii | 二位数的分 | +| i | 自然数的分 | +| ss | 二位数的秒 | +| s | 自然数的秒 | + +##### 使用样例 + +```javascript +var date = LAY_EXCEL.dateCodeFormat(43737.54167824074, 'YYYY-MM-DD HH:ii:ss') +console.log(date) // "2019-08-00 13:00:01" +``` + +#### dateFormat参数配置 + +> 辅助方法:用于将Date对象转换为对应格式的时间字符串 + +##### 传入参数 + +| 参数名称 | 描述 | 默认值 | +| -------- | -------- | ------------------- | +| date | Date对象 | | +| format | 日期格式 | YYYY-MM-DD HH:ii:ss | + +##### 返回参数 + +转换后的字符串 + +##### 支持的替换参数 + +与上文相同 + +##### 使用样例 + +```javascript +var date = LAY_EXCEL.dateCodeFormat(new Date(), 'YYYY-MM-DD HH:ii:ss') +console.log(date) // "2019-09-04 22:39:25" +``` + +## \ No newline at end of file diff --git "a/docs/\345\207\275\346\225\260\345\210\227\350\241\250/README.md" "b/docs/\345\207\275\346\225\260\345\210\227\350\241\250/README.md" new file mode 100644 index 0000000..b460d46 --- /dev/null +++ "b/docs/\345\207\275\346\225\260\345\210\227\350\241\250/README.md" @@ -0,0 +1,24 @@ +# 函数列表 + +> 仅做函数用途介绍,具体使用方法请见 『[重要函数参数配置](重要函数参数配置.md)』 + +| 函数名 | 描述 | 索引 | +| --------------------------------------------------- | ----------------------------------------------------------- | ------------------------------------------------------------ | +| **exportExcel(data, filename, type, opt)** | 导出数据,并弹出指定文件名的下载框 | [exportExcel参数配置](重要函数参数配置.md#exportexcel%E5%8F%82%E6%95%B0%E9%85%8D%E7%BD%AE) | +| downloadExl(data, filename, type) | 快速导出excel,无需指定 sheet_name 和文件后缀 | [downloadExl参数配置](重要函数参数配置.md#downloadexl%E5%8F%82%E6%95%B0%E9%85%8D%E7%BD%AE) | +| **filterExportData(data, fields)** | 梳理导出的数据,包括字段排序和多余数据 | [filterExportData参数配置](重要函数参数配置.md#filterexportdata%E5%8F%82%E6%95%B0%E9%85%8D%E7%BD%AE) | +| **importExcel(files, opt, callback)** | 读取Excel,支持多文件多表格读取 | [importExcel参数配置](重要函数参数配置.md#importexcel%E5%8F%82%E6%95%B0%E9%85%8D%E7%BD%AE) | +| **makeMergeConfig(origin)** | 生成合并的配置参数,返回结果需放置于opt.extend['!merges']中 | [makeMergeConfig参数配置](重要函数参数配置.md#makemergeconfig%E5%8F%82%E6%95%B0%E9%85%8D%E7%BD%AE) | +| **setExportCellStyle(data, range, config, filter)** | 为sheet级别数据批量设置单元格属性 | [setExportCellStyle参数配置](重要函数参数配置.md#setExportCellStyle%E5%8F%82%E6%95%B0%E9%85%8D%E7%BD%AE) | +| makeColConfig(data, defaultNum) | 生成列宽配置,返回结果需放置于opt.extend['!cols']中 | [makeColConfig参数配置](重要函数参数配置.md#makecolconfig%E5%8F%82%E6%95%B0%E9%85%8D%E7%BD%AE) | +| makeRowConfig(data, defaultNum) | 生成行高配置,返回结果需放置于opt.extend['!rows'] | [makeRowConfig参数配置](重要函数参数配置.md#makerowconfig%E5%8F%82%E6%95%B0%E9%85%8D%E7%BD%AE) | +| tableToJson(dom) | 将原生table转换为JSON格式 | [tableToJson参数配置](重要函数参数配置.md#tabletojson%E5%8F%82%E6%95%B0%E9%85%8D%E7%BD%AE) | +| **setRoundBorder(data, range ,config)** | 设置范围环绕的边框 | [setRoundBorder参数配置](重要函数参数配置.md#setRoundBorder%E5%8F%82%E6%95%B0%E9%85%8D%E7%BD%AE) | +| dateCodeToDate(code) | EXCEL日期码转换为Date对象 | [dateCodeToDate参数配置](重要函数参数配置.md#dateCodeToDate%E5%8F%82%E6%95%B0%E9%85%8D%E7%BD%AE) | +| dateFormat(date, format) | Date 对象格式化 | [dateFormat参数配置](重要函数参数配置.md#dateFormat%E5%8F%82%E6%95%B0%E9%85%8D%E7%BD%AE) | +| dateCodeFormat(code, format) | EXCEL日期码转换为格式化字符串 | [dateCodeFormat参数配置](重要函数参数配置.md#dateCodeFormat%E5%8F%82%E6%95%B0%E9%85%8D%E7%BD%AE) | +| filterDataToAoaData(sheet_data) | 将单个sheet的映射数组数据转换为加速导出效率的aoa数据 | 无 | +| filterImportData(data, fields) | 梳理导入的数据,字段含义与 filterExportData 类似 | 无 | +| numToTitle(num) | 将1/2/3...转换为A/B/C/D.../AA/AB/.../ZZ/AAA形式 | 无 | +| titleToNum(title) | 将A、B、AA、ABC转换为 1、2、3形式的数字 | 无 | +| splitPosition(pos) | 将A1分离成 {c: 0, r: 1} 格式的数据 | 无 | \ No newline at end of file diff --git "a/docs/\345\207\275\346\225\260\345\210\227\350\241\250/\351\207\215\350\246\201\345\207\275\346\225\260\345\217\202\346\225\260\351\205\215\347\275\256.md" "b/docs/\345\207\275\346\225\260\345\210\227\350\241\250/\351\207\215\350\246\201\345\207\275\346\225\260\345\217\202\346\225\260\351\205\215\347\275\256.md" new file mode 100644 index 0000000..2abb5c6 --- /dev/null +++ "b/docs/\345\207\275\346\225\260\345\210\227\350\241\250/\351\207\215\350\246\201\345\207\275\346\225\260\345\217\202\346\225\260\351\205\215\347\275\256.md" @@ -0,0 +1,469 @@ +# 重要函数参数配置 + +#### exportExcel参数配置 + +> 核心方法,用于将 data 数据依次导出,如果需要调整导出后的文件字段顺序或者过滤多余数据,请查看 filterExportData 方法 + +| 参数名称 | 描述 | 默认值 | +| -------- | ------------------------------------------------ | ------ | +| data | 数据列表(需要指定表名) | 必填 | +| filename | 文件名称(带后缀) | 必填 | +| type | 导出类型,支持 xlsx、csv、ods、xlsb、fods、biff2 | xlsx | +| opt | 其他可选配置 | null | + +##### data样例: + +```javascript +{ + "sheet1": [ + {name: '111', sex: 'male'}, + {name: '222', sex: 'female'}, + ] +} +``` + +##### opt支持的配置项 + +| 参数名称 | 描述 | 默认值 | +| --------------- | ------------------------------------------------------------ | ------ | +| opt.Props | 配置文档基础属性,支持Title、Subject、Author、Manager、Company、Category、Keywords、Comments、LastAuthor、CreatedData | null | +| opt.extend | 表格配置参数,支持 `!merge` (合并单元格信息)、`!cols`(行数)、`!protect`(写保护)等,[原生配置请参考](https://github.com/SheetJS/js-xlsx#worksheet-object),其中 `!merge` 配置支持辅助方法生成,详见 `makeMergeConfig(origin)`! | null | +| opt.compression | 是否压缩,压缩效果比较明显,建议开启(9列9w行有较多重复的数据,从 30M 缩小到 3M) | true | + +> 如果想指定某个 sheet 的opt.extend,请按照 'sheet名称' => {单独配置},如: + +```javascript +excel.exportExcel({ + sheet1: data, + sheet2: data +}, '测试导出复杂表头.xlsx', 'xlsx', { + extend: { + // extend 中可以指定某个 sheet 的属性,如果不指定 sheet 则所有 sheet 套用同一套属性 + sheet1: { + // 以下配置仅 sheet1 有效 + '!merges': mergeConf + ,'!cols': colConf + ,'!rows': rowConf + } + } +}); +``` + +#### downloadExl参数配置 + +> 兼容旧用法,用于快速导出数据,无需指定 sheet_name,无需指定后缀名,其余跟 `exportExcel` 用法相同。 + +| 参数名称 | 描述 | 默认值 | +| -------- | -------------------------------- | ------ | +| data | 导出的数据 | | +| filename | 不带后缀名的文件名 | | +| type | 导出类型(自动拼接在filename后) | | + +#### filterExportData参数配置 + +> 辅助方法,梳理导出的数据,包括字段排序和多余数据过滤 + +| 参数名称 | 描述 | 默认值 | +| -------- | ------------------------------------------------ | ------ | +| data | 需要梳理的数据 | 必填 | +| fields | 支持数组、对象和回调函数,用于映射关系和字段排序 | 必填 | + +> fields参数设计 + +在实际使用的过程中,后端给的参数多了,或者字段数据不符合导出要求,这都是很常见的情况。为了导出数据的顺序正确和数据映射正确,于是新增了这个方法。 + +fields 用于表示对象中的属性顺序和映射关系,支持『数组』和『对象』两种方式 + +假如后台给出了这样的数据: + +```json +{ + "code":0, + "msg":"", + "count":3, + "data":[ + { + "id":10000, + "username":"user-0", + "sex":"女", + "city":"城市-0", + "sign":"签名-0", + "experience":255, + "logins":24, + "wealth":82830700, + "classify":"作家", + "score":57, + "start": "2018-12-29", + "end": "2018-12-30" + } + ] +} +``` + +**数组方式:** + +仅用于排序、字段过滤,比如我希望的导出顺序和字段是: + +`id`、`sex`、`username`、`city` + +那么,我可以这样写: + +```javascript +var data = [];// 假设的后台的数据 +data = excel.filterExportData(data, ['id', 'sex', 'username', 'city']); +excel.exportExcel(data, '导出测试.xlsx', 'xlsx'); +``` + +**对象方式:** + +> 巧记:对象左侧是新名称,右侧是老名称或者回调函数(左新右旧) + +可以用于排序、重命名字段、字段过滤,比如我希望 `username` 字段重命名为 `name`,保留 `sex` 和 `city` 字段 + +那么,我可以这样写: + +```javascript +var data = [];// 假设的后台的数据 +data = excel.filterExportData(data, { + name: 'username', + sex:'sex', + city: 'city' +}); +excel.exportExcel(data, '导出测试.xlsx', 'xlsx'); +``` + +##### 回调方式: + +> 口诀:左新右旧 + +可以用于排序、重命名字段、字段过滤、自定义列、批量渲染样式,比如我希望 `range` 由 `start` `end` 聚合并以 `~` 分割;修改 `score` 为原有值的 10倍,并且 `username` 字段重命名为 `name`,保留 `sex` 和 `city` 字段,`city` 所有单元格变为**加粗+居中+红底白字**(可用样式请参见『样式设置专区』)。 + +那么,我可以这样写: + +```javascript +var data = [];// 假设的后台的数据 +data = excel.filterExportData(data, { + name: 'username', + sex:'sex', + city: function(value, line, data) { + return { + v: value,// v 代表单元格的值 + s:{// s 代表样式 + alignment: { + horizontal: 'center', + vertical: 'center', + }, + font: { sz: 14, bold: true, color: { rgb: "FFFFFF" } }, + fill: { bgColor: { indexed: 64 }, fgColor: { rgb: "FF0000" }} + }, + }; + }, + range: function(value, line, data) { + return line['start'] + '~' + line['end']; + }, + score: function(value, line, data) { + return value * 10; + } +}); +excel.exportExcel(data, '导出测试.xlsx', 'xlsx'); +``` + +##### 单元格属性含义 + +| Key | Description | +| ---- | ------------------------------------------------------------ | +| `v` | 单元格的值 | +| `w` | 格式化文本(如果适用) | +| `t` | 单元格类型: `b` 布尔值, `n` 数字, `e` 错误, `s` 字符, `d` 日期 | +| `f` | 单元格公式(如果适用) | +| `r` | 富文本编码(如果适用) | +| `h` | 富文本的HTML呈现(如果适用) | +| `c` | 与单元格相关的注释 | +| `z` | 与单元格关联的数字格式字符串(如果需要) | +| `l` | 单元格超链接对象(目标链接,.tooltip是提示) | +| `s` | 单元格的样式/主题(如果适用) | + +##### 公式设置样例: + +> 注意:网页导出的xlsx,在 Microsoft Excel 呈保护模式打开,导致公式的值不显示,此时将受保护模式关掉即可! + +对于复杂的公式,楼主也不甚了解,以普通公式 `=SUM(A1, A10)` 为例,在插件中只需要将单元格的属性设置为:`{t: 'n', f: 'SUM(A1:A10)'}`,比如我想加一个总览行就可以这样追加数据: + +```javascript +// 4. 公式的用法 +data.push({ + id: '', + username: '总年龄', + age: {t: 'n', f: 'SUM(C4:C10)'}, + sex: '总分', + score: {t: 'n', f: 'SUM(E4:E10)'}, + classify: '' +}); +``` + +官方公式相关文档:[https://github.com/SheetJS/js-xlsx#formulae](https://github.com/SheetJS/js-xlsx#formulae) + +#### setExportCellStyle参数配置 + +> 辅助方法:为 sheet 级别的数据批量设置单元格属性 + +| 参数名称 | 描述 | 默认值 | +| -------- | ------------------------------------------------------------ | ------------------------ | +| data | sheet级别的数据 | | +| range | 范围字符串,比如`" A1:C12"`表示开始位置默认 A1,结束位置C12 | 数据范围内左上角到右下角 | +| config | 批量设置的单元格属性,会与之前的样式合并 | | +| filter | 回调函数,传递函数生效,返回值作为新的值(可用于过滤、规则替换样式等骚操作)**『非必填参数』** | | + +##### filter入参列表 + +> 此参数选填,如果不传入则直接按照规则覆盖 + +| 参数名称 | 描述 | +| ---------- | ---------------------------------------- | +| cell | 原有单元格数据 | +| newCell | 根据批量设置规则自动生成样式的单元格数据 | +| row | 所在行数据 | +| config | 传入的配置 | +| currentCol | 当前列索引 | +| fieldKey | 当前字段key | + +##### 调用样例(更多用法可参考 index.js 中的样例) + +```javascript +// 1. 假设的梳理后的后台的数据(省略filter函数梳理) +var data = [ + { username: '520',sex: '男', city: 'J', 'score': 100, 'start': '2019-03-11' }, + { username: '520',sex: '女', city: 'X', 'score': 100, 'start': '2019-03-11' }, + { username: '520',sex: '男', city: '上海', 'score': 100, 'start': '2019-03-11' } +]; +// 2. 调用设置样式的函数,传入设置的范围,支持回调 +excel.setExportCellStyle(data, 'A1:C3', { + s: { + fill: { bgColor: { indexed: 64 }, fgColor: { rgb: "FF0000" } }, + alignment: { + horizontal: 'center', + vertical: 'center' + } + } +}, function(cell, newCell, row, config, currentRow, currentCol, fieldKey) { + // 回调参数,cell:原有数据,newCell:根据批量设置规则自动生成的样式,row:所在行数据,config:传入的配置,currentRow:当前行索引,currentCol:当前列索引,fieldKey:当前字段索引 + return ((currentRow + currentCol) % 2 === 0) ? newCell : cell;// 隔行隔列上色 +} ); +// 3. 导出数据 +excel.exportExcel(data, '批量设置样式.xlsx', 'xlsx'); +``` + +#### setRoundBorder参数配置 + +> 辅助方法:设置范围内环绕的边框 + +| 参数名称 | 描述 | 默认值 | +| -------- | ------------------------------------------------------------ | --------------------------------------------- | +| data | Sheet级别的数据 | [] | +| range | 范围字符串,如 A1:C12,默认从左上角到右下角 | "A1:C12" | +| config | border 上下左右属性配置信息(对角线的三个属性被下放到left/right/top/bottom下) | {top: {xxx}, bottom: {}, left: {}, right: {}} | + +##### 调用样例 + +```javascript +LAY_EXCEL.setRoundBorder(list, 'A1:C2', { + top: {style: 'thick', color: {rgb: 'FFFF0000'}}, + bottom: {style: 'thick', color: {rgb: 'FFFF0000'}}, + left: {style: 'thick', color: {rgb: 'FFFF0000'}}, + right: {style: 'thick', color: {rgb: 'FFFF0000'}} +}); +``` + +#### makeMergeConfig参数配置 + +> 辅助方法:用于生成合并表格的配置项,注意需要传入到 exportExcel 的 opt.extend['!merge'] 中 + +| 参数名称 | 描述 | 默认值 | +| -------- | -------- | ------ | +| origin | 二维数组 | null | + +##### origin数据样例 + +> 表示合并 A1~E1 行,并且合并 A2~D4行 + +```javascript +var mergeConf = excel.makeMergeConfig([ + ['A1', 'E1'], + ['A2', 'D4'] +]); +excel.exportExcel({ + sheet1: data +}, '测试导出复杂表头.xlsx', 'xlsx', { + extend: { + // 复杂表头合并[A1,E1][A2, D4] + '!merges': mergeConf + } +}); +``` + +##### 调用样例 + +请见下方『使用方法』 + +#### makeColConfig参数配置 + +> 辅助方法:生成列宽配置,返回结果需放置于opt.extend['!cols']中 + +| 参数名称 | 描述 | 默认值 | +| ---------- | ----------------------------------------------------- | ------ | +| data | 一个对象,对象的key代表列(如:ABCDE),value代表宽度 | null | +| defaultNum | 渲染过程中未指定单元格的默认宽度 | 60 | + +##### 使用样例 + +> key表示列,value表示宽,剩余宽度取默认值,特别注意要放在 opt.extend['!cols'] 中 + +```javascript +// 意思是:A列40px,B列60px(默认),C列120px,D、E、F等均未定义 +var colConf = excel.makeColConfig({ + 'A': 40, + 'C': 120 +}, 80); +excel.exportExcel({ + sheet1: data +}, '测试导出复杂表头.xlsx', 'xlsx', { + extend: { + '!cols': colConf + } +}); +``` + +#### makeRowConfig参数配置 + +> 辅助方法:生成列宽配置,返回结果需放置于opt.extend['!rows']中 + +| 参数名称 | 描述 | 默认值 | +| ---------- | ------------------------------------------------------------ | ------ | +| data | 一个对象,对象的key代表从1开始的行(如:1234),value代表高度 | null | +| defaultNum | 渲染过程中未指定单元格的默认宽度 | 60 | + +##### 使用样例 + +> key表示行,value表示高度,剩余高度取默认值,特别注意要放在 opt.extend['!rows'] 中 + +```javascript +// 意思是:1行40px,2行60px(默认),3行120px,4/5/6/7等行均未定义 +var rowConf = excel.makeRowConfig({ + 1: 40, + 3: 120 +}, 80); +excel.exportExcel({ + sheet1: data +}, '测试导出复杂表头.xlsx', 'xlsx', { + extend: { + '!rows': rowConf + } +}); +``` + +#### importExcel参数配置 + +> 核心方法,用于读取用户选择的Excel信息,文件读取基于 FileReader,所以对浏览器版本要求较高 + +| 参数名称 | 描述 | 默认值 | +| -------- | ------------------------------------------------------------ | --------- | +| files | 上传文件DOM对象的 files 属性 | undefined | +| opt | 导出参数配置,详见下方描述 | undefined | +| callback | 完全读取完毕的回调函数,传入一个参数「data」表示所有数据的集合 | undefined | + +##### opt参数配置 + +| 参数名称 | 描述 | 默认值 | +| -------- | ------------------------------------------------------------ | ------ | +| header | 导入参数的headers,支持"A"、1等,[详见XLSX官方文档](https://github.com/SheetJS/js-xlsx#json) | A | +| range | 读取的范围,支持数字、字符等,[详见XLSX官方文档](https://github.com/SheetJS/js-xlsx#json) | null | +| fields | 可以在读取的过程中进行数据梳理,参数意义请参见「filterExportData参数配置」 | null | + +> 由于处理过程中会抛出一些异常,所以请使用 try{}catch(e){}接收并提示用户! +> +> 如果对导出数据格式的键不满意,可以有两种方式梳理: +> +> 1. 调用 filterImportData(data, fields) +> 2. 直接在 importExcel() 的 opt 配置中进行数据梳理 + +##### 调用样例 + +```javascript +$(function(){ + // 监听上传文件的事件 + $('#LAY-excel-import-excel').change(function(e) { + var files = e.target.files; + try { + // 方式一:先读取数据,后梳理数据 + excel.importExcel(files, {}, function(data) { + console.log(data); + data = excel.filterImportData(data, { + 'id': 'A' + ,'username': 'B' + ,'experience': 'C' + ,'sex': 'D' + ,'score': 'E' + ,'city': 'F' + ,'classify': 'G' + ,'wealth': 'H' + ,'sign': 'I' + }) + console.log(data); + }); + // 方式二:可以在读取过程中梳理数据 + excel.importExcel(files, { + fields: { + 'id': 'A' + ,'username': 'B' + ,'experience': 'C' + ,'sex': 'D' + ,'score': 'E' + ,'city': 'F' + ,'classify': 'G' + ,'wealth': 'H' + ,'sign': 'I' + } + }, function(data) { + console.log(data); + }); + } catch (e) { + layer.alert(e.message); + } + }); +}); +``` + +#### tableToJson参数配置 + +> 辅助方法:将原生DOM的表格转换为JSON形式的数据 + +##### 传入参数 + +| 参数名称 | 描述 | 默认值 | +| -------- | ------------------------------- | ------ | +| dom | 原生表格的DOM对象或者jQuery对象 | null | + +##### 返回参数 + +| 参数名称 | 类型 | 描述 | +| -------- | ----- | ------------------ | +| head | array | 表格头部的数组数据 | +| body | array | 表格body的数组数据 | + +##### 使用样例 + +> head是头部数据,body是尾部数据,使用 arr1.push.apply(arr, arr2) 可以合并数组 + +```javascript +// 获取头部和body +var data = LAY_EXCEL.tableToJson(document.getElementById('LAY-EXPORT-TEST')) // 或者 $('#LAY-EXPORT-TEST') +// console.log(data) +var exportData = [] +exportData.push.apply(exportData, data.head) +exportData.push.apply(exportData, data.body) +// console.log(exportData) + +LAY_EXCEL.exportExcel(exportData, '表格导出.xlsx', 'xlsx') +``` + +### \ No newline at end of file diff --git "a/docs/\345\212\237\350\203\275\346\246\202\350\247\210.md" "b/docs/\345\212\237\350\203\275\346\246\202\350\247\210.md" new file mode 100644 index 0000000..54f97bb --- /dev/null +++ "b/docs/\345\212\237\350\203\275\346\246\202\350\247\210.md" @@ -0,0 +1,14 @@ +# 功能概览 + +- 支持梳理导出的数据并导出多种格式数据 +- 支持IE、火狐、chrome等主流浏览器 +- 普通工作电脑最多支持9列45W行数据规模的导出 +- 支持 xlx、xlsx、csv格式的前端数据读取以及数据梳理 +- 支持单个文件多个 sheet 的导出 +- 提供方便的列合并辅助方法 +- 提供方便的样式设置方法以及边框辅助方法 +- 支持单元格样式设置 +- 支持设置单元格宽度和高度并提供辅助方法方便使用 +- 支持公式、链接等单元格属性设置 +- 支持压缩,支持设置边距 + diff --git "a/docs/\345\217\202\344\270\216\345\274\200\345\217\221.md" "b/docs/\345\217\202\344\270\216\345\274\200\345\217\221.md" new file mode 100644 index 0000000..cca54b1 --- /dev/null +++ "b/docs/\345\217\202\344\270\216\345\274\200\345\217\221.md" @@ -0,0 +1,2 @@ +# 参与开发 + diff --git "a/docs/\345\270\270\350\247\201\351\227\256\351\242\230.md" "b/docs/\345\270\270\350\247\201\351\227\256\351\242\230.md" new file mode 100644 index 0000000..c91f0dc --- /dev/null +++ "b/docs/\345\270\270\350\247\201\351\227\256\351\242\230.md" @@ -0,0 +1,16 @@ +# 常见问题 + +> 环境提示:预览代码需要部署在服务器下,不然无法异步获取需要导出的数据 + +> 版本更新提示:如果使用 v1.2 以前的版本,filterExportData 的映射关系有所调整,请注意 + +> 非Layui环境使用:**需要先加载 jQuery,再加载 layui_exts/excel.min.js,随后使用全局变量 LAY_EXCEL 调用函数** + +> 特别注意:**不能直接在IFRAME里边直接调用导出方法,因为浏览器会限制这种导出行为,如有遇到此类情况,可使用 parent.layui.excel.exportExcel() 的方式调用父级页面函数以避免这个问题(父页面需要先加载插件)** + +## 提效建议: + +> 数据规模:前端导出**纯数据 9列10w** 的数据量需要 **7秒左右**的时间,**30W数据占用1.8G,耗时24秒**,普通电脑**最多能导出50w数据,耗时45秒**,文件大小173M,提示内存超限 + +- 如果数据量比较大,**并且不涉及样式**,最好直接转换为纯数组+CSV的导出,可以省去 filterExportData 和 组装样式的时间和内存(PS:效率提升不算太大,30W数据能提速2s左右,资源主要消耗在调用 XLSX.js之后) +- 一般 exportExcel 会放在 $.ajax() 等异步调用中,如果有需要在点击后纯前端生成Excel,可以使用 async、setTimeout等方式实现异步导出,否则会阻塞主进程。 \ No newline at end of file diff --git "a/docs/\345\277\253\351\200\237\344\270\212\346\211\213.md" "b/docs/\345\277\253\351\200\237\344\270\212\346\211\213.md" new file mode 100644 index 0000000..6ab11a0 --- /dev/null +++ "b/docs/\345\277\253\351\200\237\344\270\212\346\211\213.md" @@ -0,0 +1,88 @@ +# 快速上手 + +> 由于插件规模扩大和功能的增加,导致插件上手难度有一定的增加。但如果只使用核心功能,其实没有必要去研究插件的所有方法,故在此把此插件解决核心需求的方法展示出来。 + +#### 试一试:一句话导出 Hello World + +> 在 [http://excel.wj2015.com](http://excel.wj2015.com) 下按 F12 弹出 console 调试工具,然后在里边输入如下命令,下载完毕后打开看到如下结果就说明成功了 + +```javascript +LAY_EXCEL.exportExcel([['Hello', 'World', '!']], 'hello.xlsx', 'xlsx') +``` + +![1566996326664](assets/1566996326664.png) + +PS:这个就是核心的导出功能,第一个参数是一个二维数组,第二个参数是导出文件名,第三个参数是文件类型,是不是特别简洁,有一定JS基础的童鞋相信一眼就能看懂!下面继续介绍如何与 AJAX 结合,导出后端给到的数据。 + +#### 第一步:从后台获取需要导出的数据 + +> 一般的导出场景是后端给出获取数据的接口,前端请求后端接口后,根据接口返回参数导出,所以需要 $.ajax() 异步请求接口数据 + +```javascript +$.ajax({ + url: '/path/to/get/data', + dataType: 'json', + success: function(res) { + // 假如返回的 res.data 是需要导出的列表数据 + console.log(res.data);// [{name: 'wang', age: 18}, {name: 'layui', age: 3}] + } +}); +``` + +#### 第二步:下载源码并引入插件 + +如果使用 `layuiadmin`,则只需要将插件(`layui_exts/excel.js`)放到 `controller/`下,然后 `layui.use` 即可,或者可以放在 `lib/extend` 中,只不过需要改 `config.js` + +Layui项目,非 `layuiadmin` 的插件初始化如下: + +```javascript +layui.config({ + base: 'layui_exts/', +}).extend({ + excel: 'excel', +}); +``` + +**PS:现已支持直接引入JS文件的方式加载插件,然后通过 LAY_EXCEL 全局变量调用相关函数了,非LAYUI或者不熟悉LAYUI的插件加载机制的童鞋可以在HTML文件中通过 script 标签引入,如:** + +```html + + + + + + +``` + +#### 第三步:手工添加一个表头,并调用导出excel的内部函数 + +> 非layui框架请直接使用 $.ajax 和 LAY_EXCEL 进行异步操作和导出 + +```javascript +layui.use(['jquery', 'excel', 'layer'], function() { + var $ = layui.jquery; + var excel = layui.excel; + $.ajax({ + url: '/path/to/get/data', + dataType: 'json', + success: function(res) { + // 假如返回的 res.data 是需要导出的列表数据 + console.log(res.data);// [{name: 'wang', age: 18, sex: '男'}, {name: 'layui', age: 3, sex: '女'}] + // 1. 数组头部新增表头 + res.data.unshift({name: '用户名',sex: '男', age: '年龄'}); + // 2. 如果需要调整顺序,请执行梳理函数 + var data = excel.filterExportData(res.data, [ + 'name', + 'sex', + 'age', + ]); + // 3. 执行导出函数,系统会弹出弹框 + excel.exportExcel({ + sheet1: data + }, '导出接口数据.xlsx', 'xlsx'); + } + }); +}); +``` \ No newline at end of file diff --git "a/docs/\346\233\264\346\226\260\350\256\260\345\275\225.md" "b/docs/\346\233\264\346\226\260\350\256\260\345\275\225.md" new file mode 100644 index 0000000..510f328 --- /dev/null +++ "b/docs/\346\233\264\346\226\260\350\256\260\345\275\225.md" @@ -0,0 +1,19 @@ +# 更新记录 + +- 2019-10-03 v1.6 支持快速设置边框,支持压缩,支持CSV,支持边距设置,DEMO贡献模块,替换官方的导出功能,支持导出原生table,非Layui调用,导出时间转换,README文件优化 + +- 2019-03-11 v1.5 打包依赖方便使用并增加兼容性,支持花式设置样式,正式支持导入,修复各种BUG + +- 2019-01-13 v1.4 魔改xlsx-style以支持设置样式、列宽、行高、公式等,并提供相应的辅助方法生成需要的配置信息 + +- 2019-01-09 v1.3 支持导出多个sheet,合并导出的列 + +- 2019-01-04 v1.2 支持前端多文件多Sheet读取 Excel 数据并梳理数据格式,大量数据导出效率优化 + +- 2018-12-29 v1.1 重写内部下载逻辑,支持IE、Firefox、chrome等主流浏览器,梳理数据函数支持回调 + +- 2018-12-14 v1.0 最初版本 + +## 更新预告: + +v1.7 分段递归获取数据函数封装,分段压缩打包功能,常见问题整理,单元测试覆盖,CI/CD \ No newline at end of file diff --git "a/docs/\346\240\267\345\274\217\350\256\276\347\275\256\344\270\223\345\214\272.md" "b/docs/\346\240\267\345\274\217\350\256\276\347\275\256\344\270\223\345\214\272.md" new file mode 100644 index 0000000..847a16c --- /dev/null +++ "b/docs/\346\240\267\345\274\217\350\256\276\347\275\256\344\270\223\345\214\272.md" @@ -0,0 +1,72 @@ +# 样式设置专区 + +#### 属性支持的单元格样式 + +| 样式属性 | 子属性 | 取值 | +| :-------- | :----------- | :----------------------------------------------------------- | +| fill | patternType | `"solid"` or `"none"` | +| | fgColor | `COLOR_SPEC` | +| | bgColor | `COLOR_SPEC` | +| font | name | `"Calibri"` // 默认字体 | +| | sz | `"11"` // 字体大小 | +| | color | `COLOR_SPEC` | +| | bold | `true` or `false` | +| | underline | `true` or `false` | +| | italic | `true` or `false` | +| | strike | `true` or `false` | +| | outline | `true` or `false` | +| | shadow | `true` or `false` | +| | vertAlign | `true` or `false` | +| numFmt | | `"0"` // 内置格式的整数索引,请参见StyleBuilder.SSF属性 | +| | | `"0.00%"` // 匹配内置格式的字符串,请参阅StyleBuilder.SSF | +| | | `"0.0%"` // 指定自定义格式的字符串 | +| | | `"0.00%;\\(0.00%\\);\\-;@"` // 指定自定义格式的字符串,转义特殊字符 | +| | | `"m/dd/yy"` // 使用Excel的格式表示法字符串日期格式 | +| alignment | vertical | `"bottom"` or `"center"` or `"top"` | +| | horizontal | `"bottom"` or `"center"` or `"top"` | +| | wrapText | `true ` or ` false` // 自动换行 | +| | readingOrder | `2` // 从右到左 | +| | textRotation | 从 `0` 到 `180` 或者 `255` (默认为 `0`) | +| | | `90` 旋转90度 | +| | | `45` 旋转45度 | +| | | `135` 反向旋转45度 | +| | | `180` 旋转180度 | +| | | `255` 特殊:垂直对齐 | +| border | top | `{ style: BORDER_STYLE, color: COLOR_SPEC }` | +| | bottom | `{ style: BORDER_STYLE, color: COLOR_SPEC }` | +| | left | `{ style: BORDER_STYLE, color: COLOR_SPEC }` | +| | right | `{ style: BORDER_STYLE, color: COLOR_SPEC }` | +| | diagonal | `{ style: BORDER_STYLE, color: COLOR_SPEC }` | +| | diagonalUp | `true` or `false` | +| | diagonalDown | `true` or `false` | + +**COLOR_SPEC**: 可以设置在 `fill`, `font`, 和 `border` 属性中,是一个对象: + +- `{ auto: 1}` 指定自动值(楼主认为,应该是默认为白色的意思) +- `{ rgb: "FFFFAA00" }` 指定16进制 ARGB 的值(PS:ARGB,前两个16进制是透明度,比如不透明红色:FFFF0000) +- `{ theme: "1", tint: "-0.25"}` 指定主题颜色和色调值的整数索引(默认值为0)(PS:楼主也明白嘛意思) +- `{ indexed: 64}` 是 `fill.bgColor`属性的默认值,看着应该像索引之类的 + +**BORDER_STYLE**: 边框支持以下几种样式: + +- `thin`(细边框) +- `medium`(中等) +- `thick`(厚) +- `dotted`(点线) +- `hair`(毛) +- `dashed`(虚线) +- `mediumDashed`(中等宽度虚线) +- `dashDot`( 点) +- `mediumDashDot`(中等宽度点) +- `dashDotDot`(虚线带点) +- `mediumDashDotDot`(中等虚线带点) +- `slantDashDot`(倾斜虚线点--楼主也没明白啥意思╮(╯▽╰)╭) + +##### 合并区域边框 + +合并区域的边框是为合并区域内的每个单元格指定的。因此,要将框边框应用于3x3单元格的合并区域,需要为八个不同的单元格指定边框样式: + +- 左边三个单元格的左边框, +- 右侧三个单元格的右边框 +- 顶部单元格的顶部边框 +- 左侧单元格的底部边框 \ No newline at end of file diff --git "a/docs/\350\264\241\347\214\256DEMO.md" "b/docs/\350\264\241\347\214\256DEMO.md" new file mode 100644 index 0000000..7ad1a66 --- /dev/null +++ "b/docs/\350\264\241\347\214\256DEMO.md" @@ -0,0 +1,10 @@ +# 贡献DEMO + +> 如果您有好的DEMO,可以将其放到 demos 目录下,新建一个顾名思义的文件夹,充分测试后于 Github 提一个 Pull Request 即可。 + +| 路径 | 描述 | 贡献人 | +| ------------------------------------------------------------ | ------------------------- | -------------------------- | +| [demos/tableExport/index.html](http://excel.wj2015.com/demos/tableExport/index.html) | 导出表格数据的DEMO | 雨桐(yuton.yao@qq.com) | +| [demos/noLayui/index.html](http://excel.wj2015.com/demos/noLayui/index.html) | 非LAYUI调用及原生表格导出 | 藏锋入鞘(admin@wj2015.com) | +| [demos/borderExport/index.html](http://excel.wj2015.com/demos/borderExport/index.html) | 便捷边框设置DEMO | 藏锋入鞘(admin@wj2015.com) | +| [demos/iframeExport/index.html](http://excel.wj2015.com/demos/iframeExport/index.html) | iframe子页面调用导出 | 藏锋入鞘(admin@wj2015.com) | \ No newline at end of file diff --git a/reward.md "b/docs/\350\265\236\350\265\217\346\224\257\346\214\201.md" similarity index 69% rename from reward.md rename to "docs/\350\265\236\350\265\217\346\224\257\346\214\201.md" index a1115f6..06d13c9 100644 --- a/reward.md +++ "b/docs/\350\265\236\350\265\217\346\224\257\346\214\201.md" @@ -1,12 +1,18 @@ -## 赞赏列表 +# 赞赏支持 + +赞赏时可以备注寄语,我会不时更新到『[赞赏列表](#赞赏列表)』中 + +![功能演示](../reward_qrcode.png) + +### 赞赏列表 大家的赞赏是我开源的动力,感谢各位小伙伴们的支持!!! | 昵称 | 寄语 | 金额 | 时间 | | ------------ | ------------------------------ | ---- | ---------- | -| 巨振文 | 谢谢。一直想实现的功能被你实现 | 10 | 2019-02-01 | -| 随心 | 加油 | 1 | 2019-01-23 | -| NOBUG | 支持 | 5 | 2019-06-22 | +| shift delete | 争取做的更易用,加油大佬! | 10 | 2019-08-03 | | 异乡人 | 💗 | 5 | 2019-07-20 | -| shift delete | 争取做的更易用,加油大佬! | 10 | 1019-08-03 | - +| NOBUG | 支持 | 5 | 2019-06-22 | +| 旅行者号 | | 1 | 2019-02-27 | +| 巨振文 | 谢谢。一直想实现的功能被你实现 | 10 | 2019-02-01 | +| 随心 | 加油 | 1 | 2019-01-23 | \ No newline at end of file diff --git a/package-lock.json b/package-lock.json index 58bc60c..ca633d8 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "lay-excel", - "version": "1.5.0", + "version": "1.6.0", "lockfileVersion": 1, "requires": true, "dependencies": { @@ -12,40 +12,40 @@ }, "align-text": { "version": "0.1.4", - "resolved": "https://npm.bmtrip.io/align-text/-/align-text-0.1.4.tgz", + "resolved": "http://registry.npm.taobao.org/align-text/download/align-text-0.1.4.tgz", "integrity": "sha1-DNkKVhCT810KmSVsIrcGlDP60Rc=", "dev": true, "requires": { - "kind-of": "^3.0.2", - "longest": "^1.0.1", - "repeat-string": "^1.5.2" + "kind-of": "3.2.2", + "longest": "1.0.1", + "repeat-string": "1.6.1" } }, "ansi-regex": { "version": "2.1.1", - "resolved": "https://npm.bmtrip.io/ansi-regex/-/ansi-regex-2.1.1.tgz", + "resolved": "http://registry.npm.taobao.org/ansi-regex/download/ansi-regex-2.1.1.tgz", "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", "dev": true }, "ansi-styles": { "version": "2.2.1", - "resolved": "https://npm.bmtrip.io/ansi-styles/-/ansi-styles-2.2.1.tgz", + "resolved": "http://registry.npm.taobao.org/ansi-styles/download/ansi-styles-2.2.1.tgz", "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", "dev": true }, "argparse": { "version": "0.1.16", - "resolved": "https://npm.bmtrip.io/argparse/-/argparse-0.1.16.tgz", + "resolved": "http://registry.npm.taobao.org/argparse/download/argparse-0.1.16.tgz", "integrity": "sha1-z9AeD7uj1srtBJ+9dY1A9lGW9Xw=", "dev": true, "requires": { - "underscore": "~1.7.0", - "underscore.string": "~2.4.0" + "underscore": "1.7.0", + "underscore.string": "2.4.0" }, "dependencies": { "underscore.string": { "version": "2.4.0", - "resolved": "https://npm.bmtrip.io/underscore.string/-/underscore.string-2.4.0.tgz", + "resolved": "http://registry.npm.taobao.org/underscore.string/download/underscore.string-2.4.0.tgz", "integrity": "sha1-jN2PusTi0uoefi6Al8QvRCKA+Fs=", "dev": true } @@ -57,30 +57,30 @@ "integrity": "sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==", "dev": true, "requires": { - "safer-buffer": "~2.1.0" + "safer-buffer": "2.1.2" } }, "assert-plus": { "version": "0.2.0", - "resolved": "https://npm.bmtrip.io/assert-plus/-/assert-plus-0.2.0.tgz", + "resolved": "http://registry.npm.taobao.org/assert-plus/download/assert-plus-0.2.0.tgz", "integrity": "sha1-104bh+ev/A24qttwIfP+SBAasjQ=", "dev": true }, "async": { "version": "0.1.22", - "resolved": "https://npm.bmtrip.io/async/-/async-0.1.22.tgz", + "resolved": "http://registry.npm.taobao.org/async/download/async-0.1.22.tgz", "integrity": "sha1-D8GqoIig4+8Ovi2IMbqw3PiEUGE=", "dev": true }, "asynckit": { "version": "0.4.0", - "resolved": "https://npm.bmtrip.io/asynckit/-/asynckit-0.4.0.tgz", + "resolved": "http://registry.npm.taobao.org/asynckit/download/asynckit-0.4.0.tgz", "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=", "dev": true }, "aws-sign2": { "version": "0.6.0", - "resolved": "https://npm.bmtrip.io/aws-sign2/-/aws-sign2-0.6.0.tgz", + "resolved": "http://registry.npm.taobao.org/aws-sign2/download/aws-sign2-0.6.0.tgz", "integrity": "sha1-FDQt0428yU0OW4fXY81jYSwOeU8=", "dev": true }, @@ -92,17 +92,17 @@ }, "balanced-match": { "version": "1.0.0", - "resolved": "https://npm.bmtrip.io/balanced-match/-/balanced-match-1.0.0.tgz", + "resolved": "http://registry.npm.taobao.org/balanced-match/download/balanced-match-1.0.0.tgz", "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", "dev": true }, "bcrypt-pbkdf": { "version": "1.0.2", - "resolved": "https://npm.bmtrip.io/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", + "resolved": "http://registry.npm.taobao.org/bcrypt-pbkdf/download/bcrypt-pbkdf-1.0.2.tgz", "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=", "dev": true, "requires": { - "tweetnacl": "^0.14.3" + "tweetnacl": "0.14.5" } }, "bluebird": { @@ -113,11 +113,11 @@ }, "boom": { "version": "2.10.1", - "resolved": "https://npm.bmtrip.io/boom/-/boom-2.10.1.tgz", + "resolved": "http://registry.npm.taobao.org/boom/download/boom-2.10.1.tgz", "integrity": "sha1-OciRjO/1eZ+D+UkqhI9iWt0Mdm8=", "dev": true, "requires": { - "hoek": "2.x.x" + "hoek": "2.16.3" } }, "brace-expansion": { @@ -126,17 +126,17 @@ "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", "dev": true, "requires": { - "balanced-match": "^1.0.0", + "balanced-match": "1.0.0", "concat-map": "0.0.1" } }, "browserify-zlib": { "version": "0.1.4", - "resolved": "https://npm.bmtrip.io/browserify-zlib/-/browserify-zlib-0.1.4.tgz", + "resolved": "http://registry.npm.taobao.org/browserify-zlib/download/browserify-zlib-0.1.4.tgz", "integrity": "sha1-uzX4pRn2AOD6a4SFJByXnQFB+y0=", "dev": true, "requires": { - "pako": "~0.2.0" + "pako": "0.2.9" } }, "buffer-from": { @@ -147,85 +147,85 @@ }, "camelcase": { "version": "1.2.1", - "resolved": "https://npm.bmtrip.io/camelcase/-/camelcase-1.2.1.tgz", + "resolved": "http://registry.npm.taobao.org/camelcase/download/camelcase-1.2.1.tgz", "integrity": "sha1-m7UwTS4LVmmLLHWLCKPqqdqlijk=", "dev": true }, "caseless": { "version": "0.11.0", - "resolved": "https://npm.bmtrip.io/caseless/-/caseless-0.11.0.tgz", + "resolved": "http://registry.npm.taobao.org/caseless/download/caseless-0.11.0.tgz", "integrity": "sha1-cVuW6phBWTzDMGeSP17GDr2k99c=", "dev": true }, "center-align": { "version": "0.1.3", - "resolved": "https://npm.bmtrip.io/center-align/-/center-align-0.1.3.tgz", + "resolved": "http://registry.npm.taobao.org/center-align/download/center-align-0.1.3.tgz", "integrity": "sha1-qg0yYptu6XIgBBHL1EYckHvCt60=", "dev": true, "requires": { - "align-text": "^0.1.3", - "lazy-cache": "^1.0.3" + "align-text": "0.1.4", + "lazy-cache": "1.0.4" } }, "chalk": { "version": "1.1.3", - "resolved": "https://npm.bmtrip.io/chalk/-/chalk-1.1.3.tgz", + "resolved": "http://registry.npm.taobao.org/chalk/download/chalk-1.1.3.tgz", "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", "dev": true, "requires": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" + "ansi-styles": "2.2.1", + "escape-string-regexp": "1.0.5", + "has-ansi": "2.0.0", + "strip-ansi": "3.0.1", + "supports-color": "2.0.0" } }, "clean-yaml-object": { "version": "0.1.0", - "resolved": "https://npm.bmtrip.io/clean-yaml-object/-/clean-yaml-object-0.1.0.tgz", + "resolved": "http://registry.npm.taobao.org/clean-yaml-object/download/clean-yaml-object-0.1.0.tgz", "integrity": "sha1-Y/sRDcLOGoTcIfbZM0h20BCui2g=", "dev": true }, "cli": { "version": "0.6.6", - "resolved": "https://npm.bmtrip.io/cli/-/cli-0.6.6.tgz", + "resolved": "http://registry.npm.taobao.org/cli/download/cli-0.6.6.tgz", "integrity": "sha1-Aq1Eo4Cr8nraxebwzdewQ9dMU+M=", "dev": true, "requires": { "exit": "0.1.2", - "glob": "~ 3.2.1" + "glob": "3.2.11" }, "dependencies": { "glob": { "version": "3.2.11", - "resolved": "https://npm.bmtrip.io/glob/-/glob-3.2.11.tgz", + "resolved": "http://registry.npm.taobao.org/glob/download/glob-3.2.11.tgz", "integrity": "sha1-Spc/Y1uRkPcV0QmH1cAP0oFevj0=", "dev": true, "requires": { - "inherits": "2", - "minimatch": "0.3" + "inherits": "2.0.3", + "minimatch": "0.3.0" } }, "minimatch": { "version": "0.3.0", - "resolved": "https://npm.bmtrip.io/minimatch/-/minimatch-0.3.0.tgz", + "resolved": "http://registry.npm.taobao.org/minimatch/download/minimatch-0.3.0.tgz", "integrity": "sha1-J12O2qxPG7MyZHIInnlJyDlGmd0=", "dev": true, "requires": { - "lru-cache": "2", - "sigmund": "~1.0.0" + "lru-cache": "2.7.3", + "sigmund": "1.0.1" } } } }, "cliui": { "version": "2.1.0", - "resolved": "https://npm.bmtrip.io/cliui/-/cliui-2.1.0.tgz", + "resolved": "http://registry.npm.taobao.org/cliui/download/cliui-2.1.0.tgz", "integrity": "sha1-S0dXYP+AJkx2LDoXGQMukcf+oNE=", "dev": true, "requires": { - "center-align": "^0.1.1", - "right-align": "^0.1.1", + "center-align": "0.1.3", + "right-align": "0.1.3", "wordwrap": "0.0.2" } }, @@ -243,7 +243,7 @@ }, "colors": { "version": "0.6.2", - "resolved": "https://npm.bmtrip.io/colors/-/colors-0.6.2.tgz", + "resolved": "http://registry.npm.taobao.org/colors/download/colors-0.6.2.tgz", "integrity": "sha1-JCP+ZnisDF2uiFLl0OW+CMmXq8w=", "dev": true }, @@ -253,7 +253,7 @@ "integrity": "sha512-brWl9y6vOB1xYPZcpZde3N9zDByXTosAeMDo4p1wzo6UMOX4vumB+TP1RZ76sfE6Md68Q0NJSrE/gbezd4Ul+w==", "dev": true, "requires": { - "delayed-stream": "~1.0.0" + "delayed-stream": "1.0.0" } }, "commander": { @@ -264,7 +264,7 @@ }, "concat-map": { "version": "0.0.1", - "resolved": "https://npm.bmtrip.io/concat-map/-/concat-map-0.0.1.tgz", + "resolved": "http://registry.npm.taobao.org/concat-map/download/concat-map-0.0.1.tgz", "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", "dev": true }, @@ -274,10 +274,10 @@ "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", "dev": true, "requires": { - "buffer-from": "^1.0.0", - "inherits": "^2.0.3", - "readable-stream": "^2.2.2", - "typedarray": "^0.0.6" + "buffer-from": "1.1.1", + "inherits": "2.0.3", + "readable-stream": "2.3.6", + "typedarray": "0.0.6" }, "dependencies": { "isarray": { @@ -292,13 +292,13 @@ "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", "dev": true, "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" + "core-util-is": "1.0.2", + "inherits": "2.0.3", + "isarray": "1.0.0", + "process-nextick-args": "2.0.0", + "safe-buffer": "5.1.2", + "string_decoder": "1.1.1", + "util-deprecate": "1.0.2" } }, "string_decoder": { @@ -307,23 +307,23 @@ "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", "dev": true, "requires": { - "safe-buffer": "~5.1.0" + "safe-buffer": "5.1.2" } } } }, "console-browserify": { "version": "1.1.0", - "resolved": "https://npm.bmtrip.io/console-browserify/-/console-browserify-1.1.0.tgz", + "resolved": "http://registry.npm.taobao.org/console-browserify/download/console-browserify-1.1.0.tgz", "integrity": "sha1-8CQcRXMKn8YyOyBtvzjtx0HQuxA=", "dev": true, "requires": { - "date-now": "^0.1.4" + "date-now": "0.1.4" } }, "core-util-is": { "version": "1.0.2", - "resolved": "https://npm.bmtrip.io/core-util-is/-/core-util-is-1.0.2.tgz", + "resolved": "http://registry.npm.taobao.org/core-util-is/download/core-util-is-1.0.2.tgz", "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", "dev": true }, @@ -346,7 +346,7 @@ "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", "dev": true, "requires": { - "sprintf-js": "~1.0.2" + "sprintf-js": "1.0.3" } }, "esprima": { @@ -369,17 +369,17 @@ }, "cross-spawn": { "version": "4.0.2", - "resolved": "https://npm.bmtrip.io/cross-spawn/-/cross-spawn-4.0.2.tgz", + "resolved": "http://registry.npm.taobao.org/cross-spawn/download/cross-spawn-4.0.2.tgz", "integrity": "sha1-e5JHYhwjrf3ThWAEqCPL45dCTUE=", "dev": true, "requires": { - "lru-cache": "^4.0.1", - "which": "^1.2.9" + "lru-cache": "4.1.5", + "which": "1.3.1" }, "dependencies": { "isexe": { "version": "2.0.0", - "resolved": "https://npm.bmtrip.io/isexe/-/isexe-2.0.0.tgz", + "resolved": "http://registry.npm.taobao.org/isexe/download/isexe-2.0.0.tgz", "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", "dev": true }, @@ -389,8 +389,8 @@ "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==", "dev": true, "requires": { - "pseudomap": "^1.0.2", - "yallist": "^2.1.2" + "pseudomap": "1.0.2", + "yallist": "2.1.2" } }, "which": { @@ -399,32 +399,32 @@ "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", "dev": true, "requires": { - "isexe": "^2.0.0" + "isexe": "2.0.0" } } } }, "cryptiles": { "version": "2.0.5", - "resolved": "https://npm.bmtrip.io/cryptiles/-/cryptiles-2.0.5.tgz", + "resolved": "http://registry.npm.taobao.org/cryptiles/download/cryptiles-2.0.5.tgz", "integrity": "sha1-O9/s3GCBR8HGcgL6KR59ylnqo7g=", "dev": true, "requires": { - "boom": "2.x.x" + "boom": "2.10.1" } }, "dashdash": { "version": "1.14.1", - "resolved": "https://npm.bmtrip.io/dashdash/-/dashdash-1.14.1.tgz", + "resolved": "http://registry.npm.taobao.org/dashdash/download/dashdash-1.14.1.tgz", "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", "dev": true, "requires": { - "assert-plus": "^1.0.0" + "assert-plus": "1.0.0" }, "dependencies": { "assert-plus": { "version": "1.0.0", - "resolved": "https://npm.bmtrip.io/assert-plus/-/assert-plus-1.0.0.tgz", + "resolved": "http://registry.npm.taobao.org/assert-plus/download/assert-plus-1.0.0.tgz", "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", "dev": true } @@ -432,7 +432,7 @@ }, "date-now": { "version": "0.1.4", - "resolved": "https://npm.bmtrip.io/date-now/-/date-now-0.1.4.tgz", + "resolved": "http://registry.npm.taobao.org/date-now/download/date-now-0.1.4.tgz", "integrity": "sha1-6vQ5/U1ISK105cx9vvIAZyueNFs=", "dev": true }, @@ -453,25 +453,25 @@ }, "decamelize": { "version": "1.2.0", - "resolved": "https://npm.bmtrip.io/decamelize/-/decamelize-1.2.0.tgz", + "resolved": "http://registry.npm.taobao.org/decamelize/download/decamelize-1.2.0.tgz", "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", "dev": true }, "deeper": { "version": "2.1.0", - "resolved": "https://npm.bmtrip.io/deeper/-/deeper-2.1.0.tgz", + "resolved": "http://registry.npm.taobao.org/deeper/download/deeper-2.1.0.tgz", "integrity": "sha1-vFZOX3MXT98gHgiwADDooU2nQ2g=", "dev": true }, "delayed-stream": { "version": "1.0.0", - "resolved": "https://npm.bmtrip.io/delayed-stream/-/delayed-stream-1.0.0.tgz", + "resolved": "http://registry.npm.taobao.org/delayed-stream/download/delayed-stream-1.0.0.tgz", "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=", "dev": true }, "diff": { "version": "1.4.0", - "resolved": "https://npm.bmtrip.io/diff/-/diff-1.4.0.tgz", + "resolved": "http://registry.npm.taobao.org/diff/download/diff-1.4.0.tgz", "integrity": "sha1-fyjS657nsVqX79ic5j3P2qPMur8=", "dev": true }, @@ -481,8 +481,8 @@ "integrity": "sha512-l0IU0pPzLWSHBcieZbpOKgkIn3ts3vAh7ZuFyXNwJxJXk/c4Gwj9xaTJwIDVQCXawWD0qb3IzMGH5rglQaO0XA==", "dev": true, "requires": { - "domelementtype": "^1.3.0", - "entities": "^1.1.1" + "domelementtype": "1.3.1", + "entities": "1.1.2" }, "dependencies": { "entities": { @@ -501,66 +501,66 @@ }, "domhandler": { "version": "2.3.0", - "resolved": "https://npm.bmtrip.io/domhandler/-/domhandler-2.3.0.tgz", + "resolved": "http://registry.npm.taobao.org/domhandler/download/domhandler-2.3.0.tgz", "integrity": "sha1-LeWaCCLVAn+r/28DLCsloqir5zg=", "dev": true, "requires": { - "domelementtype": "1" + "domelementtype": "1.3.1" } }, "domutils": { "version": "1.5.1", - "resolved": "https://npm.bmtrip.io/domutils/-/domutils-1.5.1.tgz", + "resolved": "http://registry.npm.taobao.org/domutils/download/domutils-1.5.1.tgz", "integrity": "sha1-3NhIiib1Y9YQeeSMn3t+Mjc2gs8=", "dev": true, "requires": { - "dom-serializer": "0", - "domelementtype": "1" + "dom-serializer": "0.1.1", + "domelementtype": "1.3.1" } }, "ecc-jsbn": { "version": "0.1.2", - "resolved": "https://npm.bmtrip.io/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", + "resolved": "http://registry.npm.taobao.org/ecc-jsbn/download/ecc-jsbn-0.1.2.tgz", "integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=", "dev": true, "requires": { - "jsbn": "~0.1.0", - "safer-buffer": "^2.1.0" + "jsbn": "0.1.1", + "safer-buffer": "2.1.2" } }, "entities": { "version": "1.0.0", - "resolved": "https://npm.bmtrip.io/entities/-/entities-1.0.0.tgz", + "resolved": "http://registry.npm.taobao.org/entities/download/entities-1.0.0.tgz", "integrity": "sha1-sph6o4ITR/zeZCsk/fyeT7cSvyY=", "dev": true }, "escape-string-regexp": { "version": "1.0.5", - "resolved": "https://npm.bmtrip.io/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "resolved": "http://registry.npm.taobao.org/escape-string-regexp/download/escape-string-regexp-1.0.5.tgz", "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", "dev": true }, "esprima": { "version": "1.0.4", - "resolved": "https://npm.bmtrip.io/esprima/-/esprima-1.0.4.tgz", + "resolved": "http://registry.npm.taobao.org/esprima/download/esprima-1.0.4.tgz", "integrity": "sha1-n1V+CPw7TSbs6d00+Pv0drYlha0=", "dev": true }, "eventemitter2": { "version": "0.4.14", - "resolved": "https://npm.bmtrip.io/eventemitter2/-/eventemitter2-0.4.14.tgz", + "resolved": "http://registry.npm.taobao.org/eventemitter2/download/eventemitter2-0.4.14.tgz", "integrity": "sha1-j2G3XN4BKy6esoTUVFWDtWQ7Yas=", "dev": true }, "events-to-array": { "version": "1.1.2", - "resolved": "https://npm.bmtrip.io/events-to-array/-/events-to-array-1.1.2.tgz", + "resolved": "http://registry.npm.taobao.org/events-to-array/download/events-to-array-1.1.2.tgz", "integrity": "sha1-LUH1Y+H+QA7Uli/hpNXGp1Od9/Y=", "dev": true }, "exit": { "version": "0.1.2", - "resolved": "https://npm.bmtrip.io/exit/-/exit-0.1.2.tgz", + "resolved": "http://registry.npm.taobao.org/exit/download/exit-0.1.2.tgz", "integrity": "sha1-BjJjj42HfMghB9MKD/8aF8uhzQw=", "dev": true }, @@ -572,88 +572,88 @@ }, "extsprintf": { "version": "1.3.0", - "resolved": "https://npm.bmtrip.io/extsprintf/-/extsprintf-1.3.0.tgz", + "resolved": "http://registry.npm.taobao.org/extsprintf/download/extsprintf-1.3.0.tgz", "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=", "dev": true }, "figures": { "version": "1.7.0", - "resolved": "https://npm.bmtrip.io/figures/-/figures-1.7.0.tgz", + "resolved": "http://registry.npm.taobao.org/figures/download/figures-1.7.0.tgz", "integrity": "sha1-y+Hjr/zxzUS4DK3+0o3Hk6lwHS4=", "dev": true, "requires": { - "escape-string-regexp": "^1.0.5", - "object-assign": "^4.1.0" + "escape-string-regexp": "1.0.5", + "object-assign": "4.1.1" } }, "findup-sync": { "version": "0.1.3", - "resolved": "https://npm.bmtrip.io/findup-sync/-/findup-sync-0.1.3.tgz", + "resolved": "http://registry.npm.taobao.org/findup-sync/download/findup-sync-0.1.3.tgz", "integrity": "sha1-fz56l7gjksZTvwZYm9hRkOk8NoM=", "dev": true, "requires": { - "glob": "~3.2.9", - "lodash": "~2.4.1" + "glob": "3.2.11", + "lodash": "2.4.2" }, "dependencies": { "glob": { "version": "3.2.11", - "resolved": "https://npm.bmtrip.io/glob/-/glob-3.2.11.tgz", + "resolved": "http://registry.npm.taobao.org/glob/download/glob-3.2.11.tgz", "integrity": "sha1-Spc/Y1uRkPcV0QmH1cAP0oFevj0=", "dev": true, "requires": { - "inherits": "2", - "minimatch": "0.3" + "inherits": "2.0.3", + "minimatch": "0.3.0" } }, "lodash": { "version": "2.4.2", - "resolved": "https://npm.bmtrip.io/lodash/-/lodash-2.4.2.tgz", + "resolved": "http://registry.npm.taobao.org/lodash/download/lodash-2.4.2.tgz", "integrity": "sha1-+t2DS5aDBz2hebPq5tnA0VBT9z4=", "dev": true }, "minimatch": { "version": "0.3.0", - "resolved": "https://npm.bmtrip.io/minimatch/-/minimatch-0.3.0.tgz", + "resolved": "http://registry.npm.taobao.org/minimatch/download/minimatch-0.3.0.tgz", "integrity": "sha1-J12O2qxPG7MyZHIInnlJyDlGmd0=", "dev": true, "requires": { - "lru-cache": "2", - "sigmund": "~1.0.0" + "lru-cache": "2.7.3", + "sigmund": "1.0.1" } } } }, "foreground-child": { "version": "1.5.6", - "resolved": "https://npm.bmtrip.io/foreground-child/-/foreground-child-1.5.6.tgz", + "resolved": "http://registry.npm.taobao.org/foreground-child/download/foreground-child-1.5.6.tgz", "integrity": "sha1-T9ca0t/elnibmApcCilZN8svXOk=", "dev": true, "requires": { - "cross-spawn": "^4", - "signal-exit": "^3.0.0" + "cross-spawn": "4.0.2", + "signal-exit": "3.0.2" } }, "forever-agent": { "version": "0.6.1", - "resolved": "https://npm.bmtrip.io/forever-agent/-/forever-agent-0.6.1.tgz", + "resolved": "http://registry.npm.taobao.org/forever-agent/download/forever-agent-0.6.1.tgz", "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=", "dev": true }, "form-data": { "version": "2.1.4", - "resolved": "https://npm.bmtrip.io/form-data/-/form-data-2.1.4.tgz", + "resolved": "http://registry.npm.taobao.org/form-data/download/form-data-2.1.4.tgz", "integrity": "sha1-M8GDrPGTJ27KqYFDpp6Uv+4XUNE=", "dev": true, "requires": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.5", - "mime-types": "^2.1.12" + "asynckit": "0.4.0", + "combined-stream": "1.0.7", + "mime-types": "2.1.22" } }, "fs.realpath": { "version": "1.0.0", - "resolved": "https://npm.bmtrip.io/fs.realpath/-/fs.realpath-1.0.0.tgz", + "resolved": "http://registry.npm.taobao.org/fs.realpath/download/fs.realpath-1.0.0.tgz", "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", "dev": true }, @@ -663,36 +663,36 @@ "integrity": "sha512-eeB5GfMNeevm/GRYq20ShmsaGcmI81kIX2K9XQx5miC8KdHaC6Jm0qQ8ZNeGOi7wYB8OsdxKs+Y2oVuTFuVwKQ==", "dev": true, "requires": { - "is-property": "^1.0.2" + "is-property": "1.0.2" } }, "generate-object-property": { "version": "1.2.0", - "resolved": "https://npm.bmtrip.io/generate-object-property/-/generate-object-property-1.2.0.tgz", + "resolved": "http://registry.npm.taobao.org/generate-object-property/download/generate-object-property-1.2.0.tgz", "integrity": "sha1-nA4cQDCM6AT0eDYYuTf6iPmdUNA=", "dev": true, "requires": { - "is-property": "^1.0.0" + "is-property": "1.0.2" } }, "getobject": { "version": "0.1.0", - "resolved": "https://npm.bmtrip.io/getobject/-/getobject-0.1.0.tgz", + "resolved": "http://registry.npm.taobao.org/getobject/download/getobject-0.1.0.tgz", "integrity": "sha1-BHpEl4n6Fg0Bj1SG7ZEyC27HiFw=", "dev": true }, "getpass": { "version": "0.1.7", - "resolved": "https://npm.bmtrip.io/getpass/-/getpass-0.1.7.tgz", + "resolved": "http://registry.npm.taobao.org/getpass/download/getpass-0.1.7.tgz", "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", "dev": true, "requires": { - "assert-plus": "^1.0.0" + "assert-plus": "1.0.0" }, "dependencies": { "assert-plus": { "version": "1.0.0", - "resolved": "https://npm.bmtrip.io/assert-plus/-/assert-plus-1.0.0.tgz", + "resolved": "http://registry.npm.taobao.org/assert-plus/download/assert-plus-1.0.0.tgz", "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", "dev": true } @@ -700,18 +700,18 @@ }, "glob": { "version": "3.1.21", - "resolved": "https://npm.bmtrip.io/glob/-/glob-3.1.21.tgz", + "resolved": "http://registry.npm.taobao.org/glob/download/glob-3.1.21.tgz", "integrity": "sha1-0p4KBV3qUTj00H7UDomC6DwgZs0=", "dev": true, "requires": { - "graceful-fs": "~1.2.0", - "inherits": "1", - "minimatch": "~0.2.11" + "graceful-fs": "1.2.3", + "inherits": "1.0.2", + "minimatch": "0.2.14" }, "dependencies": { "inherits": { "version": "1.0.2", - "resolved": "https://npm.bmtrip.io/inherits/-/inherits-1.0.2.tgz", + "resolved": "http://registry.npm.taobao.org/inherits/download/inherits-1.0.2.tgz", "integrity": "sha1-ykMJ2t7mtUzAuNJH6NfHoJdb3Js=", "dev": true } @@ -719,132 +719,132 @@ }, "graceful-fs": { "version": "1.2.3", - "resolved": "https://npm.bmtrip.io/graceful-fs/-/graceful-fs-1.2.3.tgz", + "resolved": "http://registry.npm.taobao.org/graceful-fs/download/graceful-fs-1.2.3.tgz", "integrity": "sha1-FaSAaldUfLLS2/J/QuiajDRRs2Q=", "dev": true }, "grunt": { "version": "0.4.5", - "resolved": "https://npm.bmtrip.io/grunt/-/grunt-0.4.5.tgz", + "resolved": "http://registry.npm.taobao.org/grunt/download/grunt-0.4.5.tgz", "integrity": "sha1-VpN81RlDJK3/bSB2MYMqnWuk5/A=", "dev": true, "requires": { - "async": "~0.1.22", - "coffee-script": "~1.3.3", - "colors": "~0.6.2", + "async": "0.1.22", + "coffee-script": "1.3.3", + "colors": "0.6.2", "dateformat": "1.0.2-1.2.3", - "eventemitter2": "~0.4.13", - "exit": "~0.1.1", - "findup-sync": "~0.1.2", - "getobject": "~0.1.0", - "glob": "~3.1.21", - "grunt-legacy-log": "~0.1.0", - "grunt-legacy-util": "~0.2.0", - "hooker": "~0.2.3", - "iconv-lite": "~0.2.11", - "js-yaml": "~2.0.5", - "lodash": "~0.9.2", - "minimatch": "~0.2.12", - "nopt": "~1.0.10", - "rimraf": "~2.2.8", - "underscore.string": "~2.2.1", - "which": "~1.0.5" + "eventemitter2": "0.4.14", + "exit": "0.1.2", + "findup-sync": "0.1.3", + "getobject": "0.1.0", + "glob": "3.1.21", + "grunt-legacy-log": "0.1.3", + "grunt-legacy-util": "0.2.0", + "hooker": "0.2.3", + "iconv-lite": "0.2.11", + "js-yaml": "2.0.5", + "lodash": "0.9.2", + "minimatch": "0.2.14", + "nopt": "1.0.10", + "rimraf": "2.2.8", + "underscore.string": "2.2.1", + "which": "1.0.9" } }, "grunt-contrib-concat": { "version": "1.0.1", - "resolved": "https://npm.bmtrip.io/grunt-contrib-concat/-/grunt-contrib-concat-1.0.1.tgz", + "resolved": "http://registry.npm.taobao.org/grunt-contrib-concat/download/grunt-contrib-concat-1.0.1.tgz", "integrity": "sha1-YVCYYwhOhx1+ht5IwBUlntl3Rb0=", "dev": true, "requires": { - "chalk": "^1.0.0", - "source-map": "^0.5.3" + "chalk": "1.1.3", + "source-map": "0.5.7" } }, "grunt-contrib-jshint": { "version": "0.10.0", - "resolved": "https://npm.bmtrip.io/grunt-contrib-jshint/-/grunt-contrib-jshint-0.10.0.tgz", + "resolved": "http://registry.npm.taobao.org/grunt-contrib-jshint/download/grunt-contrib-jshint-0.10.0.tgz", "integrity": "sha1-V+vMyofo8yevZkXYo8WG1IReTYE=", "dev": true, "requires": { - "hooker": "~0.2.3", - "jshint": "~2.5.0" + "hooker": "0.2.3", + "jshint": "2.5.11" } }, "grunt-contrib-nodeunit": { "version": "0.4.1", - "resolved": "https://npm.bmtrip.io/grunt-contrib-nodeunit/-/grunt-contrib-nodeunit-0.4.1.tgz", + "resolved": "http://registry.npm.taobao.org/grunt-contrib-nodeunit/download/grunt-contrib-nodeunit-0.4.1.tgz", "integrity": "sha1-lDOT7l1msc2ttJqbI6ruREVQlbI=", "dev": true, "requires": { - "hooker": "~0.2.3", - "nodeunit": "~0.9.0" + "hooker": "0.2.3", + "nodeunit": "0.9.5" } }, "grunt-contrib-uglify": { "version": "0.5.1", - "resolved": "https://npm.bmtrip.io/grunt-contrib-uglify/-/grunt-contrib-uglify-0.5.1.tgz", + "resolved": "http://registry.npm.taobao.org/grunt-contrib-uglify/download/grunt-contrib-uglify-0.5.1.tgz", "integrity": "sha1-FfCqXo6LpCGuqYCHnuUFvHErbN4=", "dev": true, "requires": { - "chalk": "^0.5.1", - "lodash": "^2.4.1", - "maxmin": "^0.2.0", - "uglify-js": "^2.4.0" + "chalk": "0.5.1", + "lodash": "2.4.2", + "maxmin": "0.2.2", + "uglify-js": "2.8.29" }, "dependencies": { "ansi-regex": { "version": "0.2.1", - "resolved": "https://npm.bmtrip.io/ansi-regex/-/ansi-regex-0.2.1.tgz", + "resolved": "http://registry.npm.taobao.org/ansi-regex/download/ansi-regex-0.2.1.tgz", "integrity": "sha1-DY6UaWej2BQ/k+JOKYUl/BsiNfk=", "dev": true }, "ansi-styles": { "version": "1.1.0", - "resolved": "https://npm.bmtrip.io/ansi-styles/-/ansi-styles-1.1.0.tgz", + "resolved": "http://registry.npm.taobao.org/ansi-styles/download/ansi-styles-1.1.0.tgz", "integrity": "sha1-6uy/Zs1waIJ2Cy9GkVgrj1XXp94=", "dev": true }, "chalk": { "version": "0.5.1", - "resolved": "https://npm.bmtrip.io/chalk/-/chalk-0.5.1.tgz", + "resolved": "http://registry.npm.taobao.org/chalk/download/chalk-0.5.1.tgz", "integrity": "sha1-Zjs6ZItotV0EaQ1JFnqoN4WPIXQ=", "dev": true, "requires": { - "ansi-styles": "^1.1.0", - "escape-string-regexp": "^1.0.0", - "has-ansi": "^0.1.0", - "strip-ansi": "^0.3.0", - "supports-color": "^0.2.0" + "ansi-styles": "1.1.0", + "escape-string-regexp": "1.0.5", + "has-ansi": "0.1.0", + "strip-ansi": "0.3.0", + "supports-color": "0.2.0" } }, "has-ansi": { "version": "0.1.0", - "resolved": "https://npm.bmtrip.io/has-ansi/-/has-ansi-0.1.0.tgz", + "resolved": "http://registry.npm.taobao.org/has-ansi/download/has-ansi-0.1.0.tgz", "integrity": "sha1-hPJlqujA5qiKEtcCKJS3VoiUxi4=", "dev": true, "requires": { - "ansi-regex": "^0.2.0" + "ansi-regex": "0.2.1" } }, "lodash": { "version": "2.4.2", - "resolved": "https://npm.bmtrip.io/lodash/-/lodash-2.4.2.tgz", + "resolved": "http://registry.npm.taobao.org/lodash/download/lodash-2.4.2.tgz", "integrity": "sha1-+t2DS5aDBz2hebPq5tnA0VBT9z4=", "dev": true }, "strip-ansi": { "version": "0.3.0", - "resolved": "https://npm.bmtrip.io/strip-ansi/-/strip-ansi-0.3.0.tgz", + "resolved": "http://registry.npm.taobao.org/strip-ansi/download/strip-ansi-0.3.0.tgz", "integrity": "sha1-JfSOoiynkYfzF0pNuHWTR7sSYiA=", "dev": true, "requires": { - "ansi-regex": "^0.2.1" + "ansi-regex": "0.2.1" } }, "supports-color": { "version": "0.2.0", - "resolved": "https://npm.bmtrip.io/supports-color/-/supports-color-0.2.0.tgz", + "resolved": "http://registry.npm.taobao.org/supports-color/download/supports-color-0.2.0.tgz", "integrity": "sha1-2S3iaU6z9nMjlz1649i1W0wiGQo=", "dev": true } @@ -856,11 +856,11 @@ "integrity": "sha1-7ClCboAwIa9ZAp+H0vnNczWgVTE=", "dev": true, "requires": { - "colors": "~0.6.2", - "grunt-legacy-log-utils": "~0.1.1", - "hooker": "~0.2.3", - "lodash": "~2.4.1", - "underscore.string": "~2.3.3" + "colors": "0.6.2", + "grunt-legacy-log-utils": "0.1.1", + "hooker": "0.2.3", + "lodash": "2.4.2", + "underscore.string": "2.3.3" }, "dependencies": { "lodash": { @@ -879,24 +879,24 @@ }, "grunt-legacy-log-utils": { "version": "0.1.1", - "resolved": "https://npm.bmtrip.io/grunt-legacy-log-utils/-/grunt-legacy-log-utils-0.1.1.tgz", + "resolved": "http://registry.npm.taobao.org/grunt-legacy-log-utils/download/grunt-legacy-log-utils-0.1.1.tgz", "integrity": "sha1-wHBrndkGThFvNvI/5OawSGcsD34=", "dev": true, "requires": { - "colors": "~0.6.2", - "lodash": "~2.4.1", - "underscore.string": "~2.3.3" + "colors": "0.6.2", + "lodash": "2.4.2", + "underscore.string": "2.3.3" }, "dependencies": { "lodash": { "version": "2.4.2", - "resolved": "https://npm.bmtrip.io/lodash/-/lodash-2.4.2.tgz", + "resolved": "http://registry.npm.taobao.org/lodash/download/lodash-2.4.2.tgz", "integrity": "sha1-+t2DS5aDBz2hebPq5tnA0VBT9z4=", "dev": true }, "underscore.string": { "version": "2.3.3", - "resolved": "https://npm.bmtrip.io/underscore.string/-/underscore.string-2.3.3.tgz", + "resolved": "http://registry.npm.taobao.org/underscore.string/download/underscore.string-2.3.3.tgz", "integrity": "sha1-ccCL9rQosRM/N+ePo6Icgvcymw0=", "dev": true } @@ -908,113 +908,113 @@ "integrity": "sha1-kzJIhNv343qf98Am3/RR2UqeVUs=", "dev": true, "requires": { - "async": "~0.1.22", - "exit": "~0.1.1", - "getobject": "~0.1.0", - "hooker": "~0.2.3", - "lodash": "~0.9.2", - "underscore.string": "~2.2.1", - "which": "~1.0.5" + "async": "0.1.22", + "exit": "0.1.2", + "getobject": "0.1.0", + "hooker": "0.2.3", + "lodash": "0.9.2", + "underscore.string": "2.2.1", + "which": "1.0.9" } }, "gzip-size": { "version": "0.2.0", - "resolved": "https://npm.bmtrip.io/gzip-size/-/gzip-size-0.2.0.tgz", + "resolved": "http://registry.npm.taobao.org/gzip-size/download/gzip-size-0.2.0.tgz", "integrity": "sha1-46KhkSBf5W7jJvXCcUNd+uz7Phw=", "dev": true, "requires": { - "browserify-zlib": "^0.1.4", - "concat-stream": "^1.4.1" + "browserify-zlib": "0.1.4", + "concat-stream": "1.6.2" } }, "har-validator": { "version": "2.0.6", - "resolved": "https://npm.bmtrip.io/har-validator/-/har-validator-2.0.6.tgz", + "resolved": "http://registry.npm.taobao.org/har-validator/download/har-validator-2.0.6.tgz", "integrity": "sha1-zcvAgYgmWtEZtqWnyKtw7s+10n0=", "dev": true, "requires": { - "chalk": "^1.1.1", - "commander": "^2.9.0", - "is-my-json-valid": "^2.12.4", - "pinkie-promise": "^2.0.0" + "chalk": "1.1.3", + "commander": "2.19.0", + "is-my-json-valid": "2.19.0", + "pinkie-promise": "2.0.1" } }, "has-ansi": { "version": "2.0.0", - "resolved": "https://npm.bmtrip.io/has-ansi/-/has-ansi-2.0.0.tgz", + "resolved": "http://registry.npm.taobao.org/has-ansi/download/has-ansi-2.0.0.tgz", "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", "dev": true, "requires": { - "ansi-regex": "^2.0.0" + "ansi-regex": "2.1.1" } }, "hawk": { "version": "3.1.3", - "resolved": "https://npm.bmtrip.io/hawk/-/hawk-3.1.3.tgz", + "resolved": "http://registry.npm.taobao.org/hawk/download/hawk-3.1.3.tgz", "integrity": "sha1-B4REvXwWQLD+VA0sm3PVlnjo4cQ=", "dev": true, "requires": { - "boom": "2.x.x", - "cryptiles": "2.x.x", - "hoek": "2.x.x", - "sntp": "1.x.x" + "boom": "2.10.1", + "cryptiles": "2.0.5", + "hoek": "2.16.3", + "sntp": "1.0.9" } }, "hoek": { "version": "2.16.3", - "resolved": "https://npm.bmtrip.io/hoek/-/hoek-2.16.3.tgz", + "resolved": "http://registry.npm.taobao.org/hoek/download/hoek-2.16.3.tgz", "integrity": "sha1-ILt0A9POo5jpHcRxCo/xuCdKJe0=", "dev": true }, "hooker": { "version": "0.2.3", - "resolved": "https://npm.bmtrip.io/hooker/-/hooker-0.2.3.tgz", + "resolved": "http://registry.npm.taobao.org/hooker/download/hooker-0.2.3.tgz", "integrity": "sha1-uDT3I8xKJCqmWWNFnfbZhMXT2Vk=", "dev": true }, "htmlparser2": { "version": "3.8.3", - "resolved": "https://npm.bmtrip.io/htmlparser2/-/htmlparser2-3.8.3.tgz", + "resolved": "http://registry.npm.taobao.org/htmlparser2/download/htmlparser2-3.8.3.tgz", "integrity": "sha1-mWwosZFRaovoZQGn15dX5ccMEGg=", "dev": true, "requires": { - "domelementtype": "1", - "domhandler": "2.3", - "domutils": "1.5", - "entities": "1.0", - "readable-stream": "1.1" + "domelementtype": "1.3.1", + "domhandler": "2.3.0", + "domutils": "1.5.1", + "entities": "1.0.0", + "readable-stream": "1.1.14" } }, "http-signature": { "version": "1.1.1", - "resolved": "https://npm.bmtrip.io/http-signature/-/http-signature-1.1.1.tgz", + "resolved": "http://registry.npm.taobao.org/http-signature/download/http-signature-1.1.1.tgz", "integrity": "sha1-33LiZwZs0Kxn+3at+OE0qPvPkb8=", "dev": true, "requires": { - "assert-plus": "^0.2.0", - "jsprim": "^1.2.2", - "sshpk": "^1.7.0" + "assert-plus": "0.2.0", + "jsprim": "1.4.1", + "sshpk": "1.16.1" } }, "iconv-lite": { "version": "0.2.11", - "resolved": "https://npm.bmtrip.io/iconv-lite/-/iconv-lite-0.2.11.tgz", + "resolved": "http://registry.npm.taobao.org/iconv-lite/download/iconv-lite-0.2.11.tgz", "integrity": "sha1-HOYKOleGSiktEyH/RgnKS7llrcg=", "dev": true }, "inflight": { "version": "1.0.6", - "resolved": "https://npm.bmtrip.io/inflight/-/inflight-1.0.6.tgz", + "resolved": "http://registry.npm.taobao.org/inflight/download/inflight-1.0.6.tgz", "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", "dev": true, "requires": { - "once": "^1.3.0", - "wrappy": "1" + "once": "1.4.0", + "wrappy": "1.0.2" } }, "inherits": { "version": "2.0.3", - "resolved": "https://npm.bmtrip.io/inherits/-/inherits-2.0.3.tgz", + "resolved": "http://registry.npm.taobao.org/inherits/download/inherits-2.0.3.tgz", "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", "dev": true }, @@ -1036,336 +1036,3384 @@ "integrity": "sha512-mG0f/unGX1HZ5ep4uhRaPOS8EkAY8/j6mDRMJrutq4CqhoJWYp7qAlonIPy3TV7p3ju4TK9fo/PbnoksWmsp5Q==", "dev": true, "requires": { - "generate-function": "^2.0.0", - "generate-object-property": "^1.1.0", - "is-my-ip-valid": "^1.0.0", - "jsonpointer": "^4.0.0", - "xtend": "^4.0.0" + "generate-function": "2.3.1", + "generate-object-property": "1.2.0", + "is-my-ip-valid": "1.0.0", + "jsonpointer": "4.0.1", + "xtend": "4.0.1" } }, "is-property": { "version": "1.0.2", - "resolved": "https://npm.bmtrip.io/is-property/-/is-property-1.0.2.tgz", + "resolved": "http://registry.npm.taobao.org/is-property/download/is-property-1.0.2.tgz", "integrity": "sha1-V/4cTkhHTt1lsJkR8msc1Ald2oQ=", "dev": true }, "is-typedarray": { "version": "1.0.0", - "resolved": "https://npm.bmtrip.io/is-typedarray/-/is-typedarray-1.0.0.tgz", + "resolved": "http://registry.npm.taobao.org/is-typedarray/download/is-typedarray-1.0.0.tgz", "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", "dev": true }, "isarray": { "version": "0.0.1", - "resolved": "https://npm.bmtrip.io/isarray/-/isarray-0.0.1.tgz", + "resolved": "http://registry.npm.taobao.org/isarray/download/isarray-0.0.1.tgz", "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=", "dev": true }, "isexe": { "version": "1.1.2", - "resolved": "https://npm.bmtrip.io/isexe/-/isexe-1.1.2.tgz", + "resolved": "http://registry.npm.taobao.org/isexe/download/isexe-1.1.2.tgz", "integrity": "sha1-NvPiLmB1CSD15yQaR2qMakInWtA=", "dev": true }, "isstream": { "version": "0.1.2", - "resolved": "https://npm.bmtrip.io/isstream/-/isstream-0.1.2.tgz", + "resolved": "http://registry.npm.taobao.org/isstream/download/isstream-0.1.2.tgz", "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=", "dev": true }, "js-yaml": { "version": "2.0.5", - "resolved": "https://npm.bmtrip.io/js-yaml/-/js-yaml-2.0.5.tgz", + "resolved": "http://registry.npm.taobao.org/js-yaml/download/js-yaml-2.0.5.tgz", "integrity": "sha1-olrmUJmZ6X3yeMZxnaEb0Gh3Q6g=", "dev": true, "requires": { - "argparse": "~ 0.1.11", - "esprima": "~ 1.0.2" + "argparse": "0.1.16", + "esprima": "1.0.4" } }, "jsbn": { "version": "0.1.1", - "resolved": "https://npm.bmtrip.io/jsbn/-/jsbn-0.1.1.tgz", + "resolved": "http://registry.npm.taobao.org/jsbn/download/jsbn-0.1.1.tgz", "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=", "dev": true }, "jshint": { "version": "2.5.11", - "resolved": "https://npm.bmtrip.io/jshint/-/jshint-2.5.11.tgz", + "resolved": "http://registry.npm.taobao.org/jshint/download/jshint-2.5.11.tgz", "integrity": "sha1-4tlYWLuxqngwAQii6BCZ+wlWIuA=", "dev": true, "requires": { - "cli": "0.6.x", - "console-browserify": "1.1.x", - "exit": "0.1.x", - "htmlparser2": "3.8.x", - "minimatch": "1.0.x", - "shelljs": "0.3.x", - "strip-json-comments": "1.0.x", - "underscore": "1.6.x" + "cli": "0.6.6", + "console-browserify": "1.1.0", + "exit": "0.1.2", + "htmlparser2": "3.8.3", + "minimatch": "1.0.0", + "shelljs": "0.3.0", + "strip-json-comments": "1.0.4", + "underscore": "1.6.0" }, "dependencies": { "minimatch": { "version": "1.0.0", - "resolved": "https://npm.bmtrip.io/minimatch/-/minimatch-1.0.0.tgz", + "resolved": "http://registry.npm.taobao.org/minimatch/download/minimatch-1.0.0.tgz", "integrity": "sha1-4N0hILSeG3JM6NcUxSCCKpQ4V20=", "dev": true, "requires": { - "lru-cache": "2", - "sigmund": "~1.0.0" + "lru-cache": "2.7.3", + "sigmund": "1.0.1" + } + }, + "underscore": { + "version": "1.6.0", + "resolved": "http://registry.npm.taobao.org/underscore/download/underscore-1.6.0.tgz", + "integrity": "sha1-izixDKze9jM3uLJOT/htRa6lKag=", + "dev": true + } + } + }, + "json-schema": { + "version": "0.2.3", + "resolved": "http://registry.npm.taobao.org/json-schema/download/json-schema-0.2.3.tgz", + "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=", + "dev": true + }, + "json-stringify-safe": { + "version": "5.0.1", + "resolved": "http://registry.npm.taobao.org/json-stringify-safe/download/json-stringify-safe-5.0.1.tgz", + "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=", + "dev": true + }, + "jsonpointer": { + "version": "4.0.1", + "resolved": "http://registry.npm.taobao.org/jsonpointer/download/jsonpointer-4.0.1.tgz", + "integrity": "sha1-T9kss04OnbPInIYi7PUfm5eMbLk=", + "dev": true + }, + "jsprim": { + "version": "1.4.1", + "resolved": "http://registry.npm.taobao.org/jsprim/download/jsprim-1.4.1.tgz", + "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=", + "dev": true, + "requires": { + "assert-plus": "1.0.0", + "extsprintf": "1.3.0", + "json-schema": "0.2.3", + "verror": "1.10.0" + }, + "dependencies": { + "assert-plus": { + "version": "1.0.0", + "resolved": "http://registry.npm.taobao.org/assert-plus/download/assert-plus-1.0.0.tgz", + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", + "dev": true + } + } + }, + "kind-of": { + "version": "3.2.2", + "resolved": "http://registry.npm.taobao.org/kind-of/download/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "1.1.6" + } + }, + "lazy-cache": { + "version": "1.0.4", + "resolved": "http://registry.npm.taobao.org/lazy-cache/download/lazy-cache-1.0.4.tgz", + "integrity": "sha1-odePw6UEdMuAhF07O24dpJpEbo4=", + "dev": true + }, + "lcov-parse": { + "version": "0.0.10", + "resolved": "http://registry.npm.taobao.org/lcov-parse/download/lcov-parse-0.0.10.tgz", + "integrity": "sha1-GwuP+ayceIklBYK3C3ExXZ2m2aM=", + "dev": true + }, + "lodash": { + "version": "0.9.2", + "resolved": "http://registry.npm.taobao.org/lodash/download/lodash-0.9.2.tgz", + "integrity": "sha1-jzSZxSRdNG1oLlsNO0B2fgnxqSw=", + "dev": true + }, + "log-driver": { + "version": "1.2.5", + "resolved": "http://registry.npm.taobao.org/log-driver/download/log-driver-1.2.5.tgz", + "integrity": "sha1-euTsJXMC/XkNVXyxDJcQDYV7AFY=", + "dev": true + }, + "longest": { + "version": "1.0.1", + "resolved": "http://registry.npm.taobao.org/longest/download/longest-1.0.1.tgz", + "integrity": "sha1-MKCy2jj3N3DoKUoNIuZiXtd9AJc=", + "dev": true + }, + "lru-cache": { + "version": "2.7.3", + "resolved": "http://registry.npm.taobao.org/lru-cache/download/lru-cache-2.7.3.tgz", + "integrity": "sha1-bUUk6LlV+V1PW1iFHOId1y+06VI=", + "dev": true + }, + "maxmin": { + "version": "0.2.2", + "resolved": "http://registry.npm.taobao.org/maxmin/download/maxmin-0.2.2.tgz", + "integrity": "sha1-o2ztjMIuOrzRCM+3l6OktAJ1WT8=", + "dev": true, + "requires": { + "chalk": "0.5.1", + "figures": "1.7.0", + "gzip-size": "0.2.0", + "pretty-bytes": "0.1.2" + }, + "dependencies": { + "ansi-regex": { + "version": "0.2.1", + "resolved": "http://registry.npm.taobao.org/ansi-regex/download/ansi-regex-0.2.1.tgz", + "integrity": "sha1-DY6UaWej2BQ/k+JOKYUl/BsiNfk=", + "dev": true + }, + "ansi-styles": { + "version": "1.1.0", + "resolved": "http://registry.npm.taobao.org/ansi-styles/download/ansi-styles-1.1.0.tgz", + "integrity": "sha1-6uy/Zs1waIJ2Cy9GkVgrj1XXp94=", + "dev": true + }, + "chalk": { + "version": "0.5.1", + "resolved": "http://registry.npm.taobao.org/chalk/download/chalk-0.5.1.tgz", + "integrity": "sha1-Zjs6ZItotV0EaQ1JFnqoN4WPIXQ=", + "dev": true, + "requires": { + "ansi-styles": "1.1.0", + "escape-string-regexp": "1.0.5", + "has-ansi": "0.1.0", + "strip-ansi": "0.3.0", + "supports-color": "0.2.0" + } + }, + "has-ansi": { + "version": "0.1.0", + "resolved": "http://registry.npm.taobao.org/has-ansi/download/has-ansi-0.1.0.tgz", + "integrity": "sha1-hPJlqujA5qiKEtcCKJS3VoiUxi4=", + "dev": true, + "requires": { + "ansi-regex": "0.2.1" + } + }, + "strip-ansi": { + "version": "0.3.0", + "resolved": "http://registry.npm.taobao.org/strip-ansi/download/strip-ansi-0.3.0.tgz", + "integrity": "sha1-JfSOoiynkYfzF0pNuHWTR7sSYiA=", + "dev": true, + "requires": { + "ansi-regex": "0.2.1" + } + }, + "supports-color": { + "version": "0.2.0", + "resolved": "http://registry.npm.taobao.org/supports-color/download/supports-color-0.2.0.tgz", + "integrity": "sha1-2S3iaU6z9nMjlz1649i1W0wiGQo=", + "dev": true + } + } + }, + "mime-db": { + "version": "1.38.0", + "resolved": "https://npm.bmtrip.io/mime-db/-/mime-db-1.38.0.tgz", + "integrity": "sha512-bqVioMFFzc2awcdJZIzR3HjZFX20QhilVS7hytkKrv7xFAn8bM1gzc/FOX2awLISvWe0PV8ptFKcon+wZ5qYkg==", + "dev": true + }, + "mime-types": { + "version": "2.1.22", + "resolved": "https://npm.bmtrip.io/mime-types/-/mime-types-2.1.22.tgz", + "integrity": "sha512-aGl6TZGnhm/li6F7yx82bJiBZwgiEa4Hf6CNr8YO+r5UHr53tSTYZb102zyU50DOWWKeOv0uQLRL0/9EiKWCog==", + "dev": true, + "requires": { + "mime-db": "1.38.0" + } + }, + "minimatch": { + "version": "0.2.14", + "resolved": "http://registry.npm.taobao.org/minimatch/download/minimatch-0.2.14.tgz", + "integrity": "sha1-x054BXT2PG+aCQ6Q775u9TpqdWo=", + "dev": true, + "requires": { + "lru-cache": "2.7.3", + "sigmund": "1.0.1" + } + }, + "minimist": { + "version": "1.2.0", + "resolved": "http://registry.npm.taobao.org/minimist/download/minimist-1.2.0.tgz", + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", + "dev": true + }, + "ms": { + "version": "2.0.0", + "resolved": "http://registry.npm.taobao.org/ms/download/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + }, + "nodeunit": { + "version": "0.9.5", + "resolved": "http://registry.npm.taobao.org/nodeunit/download/nodeunit-0.9.5.tgz", + "integrity": "sha1-C2MjaAB9lGUczwoYmZgHmC8HOGY=", + "dev": true, + "requires": { + "tap": "7.1.2" + } + }, + "nopt": { + "version": "1.0.10", + "resolved": "http://registry.npm.taobao.org/nopt/download/nopt-1.0.10.tgz", + "integrity": "sha1-bd0hvSoxQXuScn3Vhfim83YI6+4=", + "dev": true, + "requires": { + "abbrev": "1.1.1" + } + }, + "npm": { + "version": "6.11.3", + "resolved": "https://registry.npm.taobao.org/npm/download/npm-6.11.3.tgz", + "integrity": "sha1-cw9Gt8xbvG8E3Ve1aZvgyfI1ndo=", + "requires": { + "JSONStream": "1.3.5", + "abbrev": "1.1.1", + "ansicolors": "0.3.2", + "ansistyles": "0.1.3", + "aproba": "2.0.0", + "archy": "1.0.0", + "bin-links": "1.1.3", + "bluebird": "3.5.5", + "byte-size": "5.0.1", + "cacache": "12.0.3", + "call-limit": "1.1.1", + "chownr": "1.1.2", + "ci-info": "2.0.0", + "cli-columns": "3.1.2", + "cli-table3": "0.5.1", + "cmd-shim": "3.0.3", + "columnify": "1.5.4", + "config-chain": "1.1.12", + "debuglog": "1.0.1", + "detect-indent": "5.0.0", + "detect-newline": "2.1.0", + "dezalgo": "1.0.3", + "editor": "1.0.0", + "figgy-pudding": "3.5.1", + "find-npm-prefix": "1.0.2", + "fs-vacuum": "1.2.10", + "fs-write-stream-atomic": "1.0.10", + "gentle-fs": "2.2.1", + "glob": "7.1.4", + "graceful-fs": "4.2.2", + "has-unicode": "2.0.1", + "hosted-git-info": "2.8.2", + "iferr": "1.0.2", + "imurmurhash": "0.1.4", + "infer-owner": "1.0.4", + "inflight": "1.0.6", + "inherits": "2.0.4", + "ini": "1.3.5", + "init-package-json": "1.10.3", + "is-cidr": "3.0.0", + "json-parse-better-errors": "1.0.2", + "lazy-property": "1.0.0", + "libcipm": "4.0.3", + "libnpm": "3.0.1", + "libnpmaccess": "3.0.2", + "libnpmhook": "5.0.3", + "libnpmorg": "1.0.1", + "libnpmsearch": "2.0.2", + "libnpmteam": "1.0.2", + "libnpx": "10.2.0", + "lock-verify": "2.1.0", + "lockfile": "1.0.4", + "lodash._baseindexof": "3.1.0", + "lodash._baseuniq": "4.6.0", + "lodash._bindcallback": "3.0.1", + "lodash._cacheindexof": "3.0.2", + "lodash._createcache": "3.1.2", + "lodash._getnative": "3.9.1", + "lodash.clonedeep": "4.5.0", + "lodash.restparam": "3.6.1", + "lodash.union": "4.6.0", + "lodash.uniq": "4.5.0", + "lodash.without": "4.4.0", + "lru-cache": "5.1.1", + "meant": "1.0.1", + "mississippi": "3.0.0", + "mkdirp": "0.5.1", + "move-concurrently": "1.0.1", + "node-gyp": "5.0.3", + "nopt": "4.0.1", + "normalize-package-data": "2.5.0", + "npm-audit-report": "1.3.2", + "npm-cache-filename": "1.0.2", + "npm-install-checks": "3.0.0", + "npm-lifecycle": "3.1.3", + "npm-package-arg": "6.1.1", + "npm-packlist": "1.4.4", + "npm-pick-manifest": "3.0.2", + "npm-profile": "4.0.2", + "npm-registry-fetch": "4.0.0", + "npm-user-validate": "1.0.0", + "npmlog": "4.1.2", + "once": "1.4.0", + "opener": "1.5.1", + "osenv": "0.1.5", + "pacote": "9.5.8", + "path-is-inside": "1.0.2", + "promise-inflight": "1.0.1", + "qrcode-terminal": "0.12.0", + "query-string": "6.8.2", + "qw": "1.0.1", + "read": "1.0.7", + "read-cmd-shim": "1.0.4", + "read-installed": "4.0.3", + "read-package-json": "2.1.0", + "read-package-tree": "5.3.1", + "readable-stream": "3.4.0", + "readdir-scoped-modules": "1.1.0", + "request": "2.88.0", + "retry": "0.12.0", + "rimraf": "2.6.3", + "safe-buffer": "5.1.2", + "semver": "5.7.1", + "sha": "3.0.0", + "slide": "1.1.6", + "sorted-object": "2.0.1", + "sorted-union-stream": "2.1.3", + "ssri": "6.0.1", + "stringify-package": "1.0.0", + "tar": "4.4.10", + "text-table": "0.2.0", + "tiny-relative-date": "1.3.0", + "uid-number": "0.0.6", + "umask": "1.1.0", + "unique-filename": "1.1.1", + "unpipe": "1.0.0", + "update-notifier": "2.5.0", + "uuid": "3.3.2", + "validate-npm-package-license": "3.0.4", + "validate-npm-package-name": "3.0.0", + "which": "1.3.1", + "worker-farm": "1.7.0", + "write-file-atomic": "2.4.3" + }, + "dependencies": { + "JSONStream": { + "version": "1.3.5", + "bundled": true, + "requires": { + "jsonparse": "1.3.1", + "through": "2.3.8" + } + }, + "abbrev": { + "version": "1.1.1", + "bundled": true + }, + "agent-base": { + "version": "4.3.0", + "bundled": true, + "requires": { + "es6-promisify": "5.0.0" + } + }, + "agentkeepalive": { + "version": "3.5.2", + "bundled": true, + "requires": { + "humanize-ms": "1.2.1" + } + }, + "ajv": { + "version": "5.5.2", + "bundled": true, + "requires": { + "co": "4.6.0", + "fast-deep-equal": "1.1.0", + "fast-json-stable-stringify": "2.0.0", + "json-schema-traverse": "0.3.1" + } + }, + "ansi-align": { + "version": "2.0.0", + "bundled": true, + "requires": { + "string-width": "2.1.1" + } + }, + "ansi-regex": { + "version": "2.1.1", + "bundled": true + }, + "ansi-styles": { + "version": "3.2.1", + "bundled": true, + "requires": { + "color-convert": "1.9.1" + } + }, + "ansicolors": { + "version": "0.3.2", + "bundled": true + }, + "ansistyles": { + "version": "0.1.3", + "bundled": true + }, + "aproba": { + "version": "2.0.0", + "bundled": true + }, + "archy": { + "version": "1.0.0", + "bundled": true + }, + "are-we-there-yet": { + "version": "1.1.4", + "bundled": true, + "requires": { + "delegates": "1.0.0", + "readable-stream": "2.3.6" + }, + "dependencies": { + "readable-stream": { + "version": "2.3.6", + "bundled": true, + "requires": { + "core-util-is": "1.0.2", + "inherits": "2.0.4", + "isarray": "1.0.0", + "process-nextick-args": "2.0.0", + "safe-buffer": "5.1.2", + "string_decoder": "1.1.1", + "util-deprecate": "1.0.2" + } + }, + "string_decoder": { + "version": "1.1.1", + "bundled": true, + "requires": { + "safe-buffer": "5.1.2" + } + } + } + }, + "asap": { + "version": "2.0.6", + "bundled": true + }, + "asn1": { + "version": "0.2.4", + "bundled": true, + "requires": { + "safer-buffer": "2.1.2" + } + }, + "assert-plus": { + "version": "1.0.0", + "bundled": true + }, + "asynckit": { + "version": "0.4.0", + "bundled": true + }, + "aws-sign2": { + "version": "0.7.0", + "bundled": true + }, + "aws4": { + "version": "1.8.0", + "bundled": true + }, + "balanced-match": { + "version": "1.0.0", + "bundled": true + }, + "bcrypt-pbkdf": { + "version": "1.0.2", + "bundled": true, + "optional": true, + "requires": { + "tweetnacl": "0.14.5" + } + }, + "bin-links": { + "version": "1.1.3", + "bundled": true, + "requires": { + "bluebird": "3.5.5", + "cmd-shim": "3.0.3", + "gentle-fs": "2.2.1", + "graceful-fs": "4.2.2", + "write-file-atomic": "2.4.3" + } + }, + "bluebird": { + "version": "3.5.5", + "bundled": true + }, + "boxen": { + "version": "1.3.0", + "bundled": true, + "requires": { + "ansi-align": "2.0.0", + "camelcase": "4.1.0", + "chalk": "2.4.1", + "cli-boxes": "1.0.0", + "string-width": "2.1.1", + "term-size": "1.2.0", + "widest-line": "2.0.0" + } + }, + "brace-expansion": { + "version": "1.1.11", + "bundled": true, + "requires": { + "balanced-match": "1.0.0", + "concat-map": "0.0.1" + } + }, + "buffer-from": { + "version": "1.0.0", + "bundled": true + }, + "builtins": { + "version": "1.0.3", + "bundled": true + }, + "byline": { + "version": "5.0.0", + "bundled": true + }, + "byte-size": { + "version": "5.0.1", + "bundled": true + }, + "cacache": { + "version": "12.0.3", + "bundled": true, + "requires": { + "bluebird": "3.5.5", + "chownr": "1.1.2", + "figgy-pudding": "3.5.1", + "glob": "7.1.4", + "graceful-fs": "4.2.2", + "infer-owner": "1.0.4", + "lru-cache": "5.1.1", + "mississippi": "3.0.0", + "mkdirp": "0.5.1", + "move-concurrently": "1.0.1", + "promise-inflight": "1.0.1", + "rimraf": "2.6.3", + "ssri": "6.0.1", + "unique-filename": "1.1.1", + "y18n": "4.0.0" + } + }, + "call-limit": { + "version": "1.1.1", + "bundled": true + }, + "camelcase": { + "version": "4.1.0", + "bundled": true + }, + "capture-stack-trace": { + "version": "1.0.0", + "bundled": true + }, + "caseless": { + "version": "0.12.0", + "bundled": true + }, + "chalk": { + "version": "2.4.1", + "bundled": true, + "requires": { + "ansi-styles": "3.2.1", + "escape-string-regexp": "1.0.5", + "supports-color": "5.4.0" + } + }, + "chownr": { + "version": "1.1.2", + "bundled": true + }, + "ci-info": { + "version": "2.0.0", + "bundled": true + }, + "cidr-regex": { + "version": "2.0.10", + "bundled": true, + "requires": { + "ip-regex": "2.1.0" + } + }, + "cli-boxes": { + "version": "1.0.0", + "bundled": true + }, + "cli-columns": { + "version": "3.1.2", + "bundled": true, + "requires": { + "string-width": "2.1.1", + "strip-ansi": "3.0.1" + } + }, + "cli-table3": { + "version": "0.5.1", + "bundled": true, + "requires": { + "colors": "1.3.3", + "object-assign": "4.1.1", + "string-width": "2.1.1" + } + }, + "cliui": { + "version": "4.1.0", + "bundled": true, + "requires": { + "string-width": "2.1.1", + "strip-ansi": "4.0.0", + "wrap-ansi": "2.1.0" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.0", + "bundled": true + }, + "strip-ansi": { + "version": "4.0.0", + "bundled": true, + "requires": { + "ansi-regex": "3.0.0" + } + } + } + }, + "clone": { + "version": "1.0.4", + "bundled": true + }, + "cmd-shim": { + "version": "3.0.3", + "bundled": true, + "requires": { + "graceful-fs": "4.2.2", + "mkdirp": "0.5.1" + } + }, + "co": { + "version": "4.6.0", + "bundled": true + }, + "code-point-at": { + "version": "1.1.0", + "bundled": true + }, + "color-convert": { + "version": "1.9.1", + "bundled": true, + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "bundled": true + }, + "colors": { + "version": "1.3.3", + "bundled": true, + "optional": true + }, + "columnify": { + "version": "1.5.4", + "bundled": true, + "requires": { + "strip-ansi": "3.0.1", + "wcwidth": "1.0.1" + } + }, + "combined-stream": { + "version": "1.0.6", + "bundled": true, + "requires": { + "delayed-stream": "1.0.0" + } + }, + "concat-map": { + "version": "0.0.1", + "bundled": true + }, + "concat-stream": { + "version": "1.6.2", + "bundled": true, + "requires": { + "buffer-from": "1.0.0", + "inherits": "2.0.4", + "readable-stream": "2.3.6", + "typedarray": "0.0.6" + }, + "dependencies": { + "readable-stream": { + "version": "2.3.6", + "bundled": true, + "requires": { + "core-util-is": "1.0.2", + "inherits": "2.0.4", + "isarray": "1.0.0", + "process-nextick-args": "2.0.0", + "safe-buffer": "5.1.2", + "string_decoder": "1.1.1", + "util-deprecate": "1.0.2" + } + }, + "string_decoder": { + "version": "1.1.1", + "bundled": true, + "requires": { + "safe-buffer": "5.1.2" + } + } + } + }, + "config-chain": { + "version": "1.1.12", + "bundled": true, + "requires": { + "ini": "1.3.5", + "proto-list": "1.2.4" + } + }, + "configstore": { + "version": "3.1.2", + "bundled": true, + "requires": { + "dot-prop": "4.2.0", + "graceful-fs": "4.2.2", + "make-dir": "1.3.0", + "unique-string": "1.0.0", + "write-file-atomic": "2.4.3", + "xdg-basedir": "3.0.0" + } + }, + "console-control-strings": { + "version": "1.1.0", + "bundled": true + }, + "copy-concurrently": { + "version": "1.0.5", + "bundled": true, + "requires": { + "aproba": "1.2.0", + "fs-write-stream-atomic": "1.0.10", + "iferr": "0.1.5", + "mkdirp": "0.5.1", + "rimraf": "2.6.3", + "run-queue": "1.0.3" + }, + "dependencies": { + "aproba": { + "version": "1.2.0", + "bundled": true + }, + "iferr": { + "version": "0.1.5", + "bundled": true + } + } + }, + "core-util-is": { + "version": "1.0.2", + "bundled": true + }, + "create-error-class": { + "version": "3.0.2", + "bundled": true, + "requires": { + "capture-stack-trace": "1.0.0" + } + }, + "cross-spawn": { + "version": "5.1.0", + "bundled": true, + "requires": { + "lru-cache": "4.1.5", + "shebang-command": "1.2.0", + "which": "1.3.1" + }, + "dependencies": { + "lru-cache": { + "version": "4.1.5", + "bundled": true, + "requires": { + "pseudomap": "1.0.2", + "yallist": "2.1.2" + } + }, + "yallist": { + "version": "2.1.2", + "bundled": true + } + } + }, + "crypto-random-string": { + "version": "1.0.0", + "bundled": true + }, + "cyclist": { + "version": "0.2.2", + "bundled": true + }, + "dashdash": { + "version": "1.14.1", + "bundled": true, + "requires": { + "assert-plus": "1.0.0" + } + }, + "debug": { + "version": "3.1.0", + "bundled": true, + "requires": { + "ms": "2.0.0" + }, + "dependencies": { + "ms": { + "version": "2.0.0", + "bundled": true + } + } + }, + "debuglog": { + "version": "1.0.1", + "bundled": true + }, + "decamelize": { + "version": "1.2.0", + "bundled": true + }, + "decode-uri-component": { + "version": "0.2.0", + "bundled": true + }, + "deep-extend": { + "version": "0.5.1", + "bundled": true + }, + "defaults": { + "version": "1.0.3", + "bundled": true, + "requires": { + "clone": "1.0.4" + } + }, + "define-properties": { + "version": "1.1.3", + "bundled": true, + "requires": { + "object-keys": "1.0.12" + } + }, + "delayed-stream": { + "version": "1.0.0", + "bundled": true + }, + "delegates": { + "version": "1.0.0", + "bundled": true + }, + "detect-indent": { + "version": "5.0.0", + "bundled": true + }, + "detect-newline": { + "version": "2.1.0", + "bundled": true + }, + "dezalgo": { + "version": "1.0.3", + "bundled": true, + "requires": { + "asap": "2.0.6", + "wrappy": "1.0.2" + } + }, + "dot-prop": { + "version": "4.2.0", + "bundled": true, + "requires": { + "is-obj": "1.0.1" + } + }, + "dotenv": { + "version": "5.0.1", + "bundled": true + }, + "duplexer3": { + "version": "0.1.4", + "bundled": true + }, + "duplexify": { + "version": "3.6.0", + "bundled": true, + "requires": { + "end-of-stream": "1.4.1", + "inherits": "2.0.4", + "readable-stream": "2.3.6", + "stream-shift": "1.0.0" + }, + "dependencies": { + "readable-stream": { + "version": "2.3.6", + "bundled": true, + "requires": { + "core-util-is": "1.0.2", + "inherits": "2.0.4", + "isarray": "1.0.0", + "process-nextick-args": "2.0.0", + "safe-buffer": "5.1.2", + "string_decoder": "1.1.1", + "util-deprecate": "1.0.2" + } + }, + "string_decoder": { + "version": "1.1.1", + "bundled": true, + "requires": { + "safe-buffer": "5.1.2" + } + } + } + }, + "ecc-jsbn": { + "version": "0.1.2", + "bundled": true, + "optional": true, + "requires": { + "jsbn": "0.1.1", + "safer-buffer": "2.1.2" + } + }, + "editor": { + "version": "1.0.0", + "bundled": true + }, + "encoding": { + "version": "0.1.12", + "bundled": true, + "requires": { + "iconv-lite": "0.4.23" + } + }, + "end-of-stream": { + "version": "1.4.1", + "bundled": true, + "requires": { + "once": "1.4.0" + } + }, + "env-paths": { + "version": "1.0.0", + "bundled": true + }, + "err-code": { + "version": "1.1.2", + "bundled": true + }, + "errno": { + "version": "0.1.7", + "bundled": true, + "requires": { + "prr": "1.0.1" + } + }, + "es-abstract": { + "version": "1.12.0", + "bundled": true, + "requires": { + "es-to-primitive": "1.2.0", + "function-bind": "1.1.1", + "has": "1.0.3", + "is-callable": "1.1.4", + "is-regex": "1.0.4" + } + }, + "es-to-primitive": { + "version": "1.2.0", + "bundled": true, + "requires": { + "is-callable": "1.1.4", + "is-date-object": "1.0.1", + "is-symbol": "1.0.2" + } + }, + "es6-promise": { + "version": "4.2.8", + "bundled": true + }, + "es6-promisify": { + "version": "5.0.0", + "bundled": true, + "requires": { + "es6-promise": "4.2.8" + } + }, + "escape-string-regexp": { + "version": "1.0.5", + "bundled": true + }, + "execa": { + "version": "0.7.0", + "bundled": true, + "requires": { + "cross-spawn": "5.1.0", + "get-stream": "3.0.0", + "is-stream": "1.1.0", + "npm-run-path": "2.0.2", + "p-finally": "1.0.0", + "signal-exit": "3.0.2", + "strip-eof": "1.0.0" + }, + "dependencies": { + "get-stream": { + "version": "3.0.0", + "bundled": true + } + } + }, + "extend": { + "version": "3.0.2", + "bundled": true + }, + "extsprintf": { + "version": "1.3.0", + "bundled": true + }, + "fast-deep-equal": { + "version": "1.1.0", + "bundled": true + }, + "fast-json-stable-stringify": { + "version": "2.0.0", + "bundled": true + }, + "figgy-pudding": { + "version": "3.5.1", + "bundled": true + }, + "find-npm-prefix": { + "version": "1.0.2", + "bundled": true + }, + "find-up": { + "version": "2.1.0", + "bundled": true, + "requires": { + "locate-path": "2.0.0" + } + }, + "flush-write-stream": { + "version": "1.0.3", + "bundled": true, + "requires": { + "inherits": "2.0.4", + "readable-stream": "2.3.6" + }, + "dependencies": { + "readable-stream": { + "version": "2.3.6", + "bundled": true, + "requires": { + "core-util-is": "1.0.2", + "inherits": "2.0.4", + "isarray": "1.0.0", + "process-nextick-args": "2.0.0", + "safe-buffer": "5.1.2", + "string_decoder": "1.1.1", + "util-deprecate": "1.0.2" + } + }, + "string_decoder": { + "version": "1.1.1", + "bundled": true, + "requires": { + "safe-buffer": "5.1.2" + } + } + } + }, + "forever-agent": { + "version": "0.6.1", + "bundled": true + }, + "form-data": { + "version": "2.3.2", + "bundled": true, + "requires": { + "asynckit": "0.4.0", + "combined-stream": "1.0.6", + "mime-types": "2.1.19" + } + }, + "from2": { + "version": "2.3.0", + "bundled": true, + "requires": { + "inherits": "2.0.4", + "readable-stream": "2.3.6" + }, + "dependencies": { + "readable-stream": { + "version": "2.3.6", + "bundled": true, + "requires": { + "core-util-is": "1.0.2", + "inherits": "2.0.4", + "isarray": "1.0.0", + "process-nextick-args": "2.0.0", + "safe-buffer": "5.1.2", + "string_decoder": "1.1.1", + "util-deprecate": "1.0.2" + } + }, + "string_decoder": { + "version": "1.1.1", + "bundled": true, + "requires": { + "safe-buffer": "5.1.2" + } + } + } + }, + "fs-minipass": { + "version": "1.2.6", + "bundled": true, + "requires": { + "minipass": "2.3.3" + } + }, + "fs-vacuum": { + "version": "1.2.10", + "bundled": true, + "requires": { + "graceful-fs": "4.2.2", + "path-is-inside": "1.0.2", + "rimraf": "2.6.3" + } + }, + "fs-write-stream-atomic": { + "version": "1.0.10", + "bundled": true, + "requires": { + "graceful-fs": "4.2.2", + "iferr": "0.1.5", + "imurmurhash": "0.1.4", + "readable-stream": "2.3.6" + }, + "dependencies": { + "iferr": { + "version": "0.1.5", + "bundled": true + }, + "readable-stream": { + "version": "2.3.6", + "bundled": true, + "requires": { + "core-util-is": "1.0.2", + "inherits": "2.0.4", + "isarray": "1.0.0", + "process-nextick-args": "2.0.0", + "safe-buffer": "5.1.2", + "string_decoder": "1.1.1", + "util-deprecate": "1.0.2" + } + }, + "string_decoder": { + "version": "1.1.1", + "bundled": true, + "requires": { + "safe-buffer": "5.1.2" + } + } + } + }, + "fs.realpath": { + "version": "1.0.0", + "bundled": true + }, + "function-bind": { + "version": "1.1.1", + "bundled": true + }, + "gauge": { + "version": "2.7.4", + "bundled": true, + "requires": { + "aproba": "1.2.0", + "console-control-strings": "1.1.0", + "has-unicode": "2.0.1", + "object-assign": "4.1.1", + "signal-exit": "3.0.2", + "string-width": "1.0.2", + "strip-ansi": "3.0.1", + "wide-align": "1.1.2" + }, + "dependencies": { + "aproba": { + "version": "1.2.0", + "bundled": true + }, + "string-width": { + "version": "1.0.2", + "bundled": true, + "requires": { + "code-point-at": "1.1.0", + "is-fullwidth-code-point": "1.0.0", + "strip-ansi": "3.0.1" + } + } + } + }, + "genfun": { + "version": "5.0.0", + "bundled": true + }, + "gentle-fs": { + "version": "2.2.1", + "bundled": true, + "requires": { + "aproba": "1.2.0", + "chownr": "1.1.2", + "fs-vacuum": "1.2.10", + "graceful-fs": "4.2.2", + "iferr": "0.1.5", + "infer-owner": "1.0.4", + "mkdirp": "0.5.1", + "path-is-inside": "1.0.2", + "read-cmd-shim": "1.0.4", + "slide": "1.1.6" + }, + "dependencies": { + "aproba": { + "version": "1.2.0", + "bundled": true + }, + "iferr": { + "version": "0.1.5", + "bundled": true + } + } + }, + "get-caller-file": { + "version": "1.0.2", + "bundled": true + }, + "get-stream": { + "version": "4.1.0", + "bundled": true, + "requires": { + "pump": "3.0.0" + } + }, + "getpass": { + "version": "0.1.7", + "bundled": true, + "requires": { + "assert-plus": "1.0.0" + } + }, + "glob": { + "version": "7.1.4", + "bundled": true, + "requires": { + "fs.realpath": "1.0.0", + "inflight": "1.0.6", + "inherits": "2.0.4", + "minimatch": "3.0.4", + "once": "1.4.0", + "path-is-absolute": "1.0.1" + } + }, + "global-dirs": { + "version": "0.1.1", + "bundled": true, + "requires": { + "ini": "1.3.5" + } + }, + "got": { + "version": "6.7.1", + "bundled": true, + "requires": { + "create-error-class": "3.0.2", + "duplexer3": "0.1.4", + "get-stream": "3.0.0", + "is-redirect": "1.0.0", + "is-retry-allowed": "1.1.0", + "is-stream": "1.1.0", + "lowercase-keys": "1.0.1", + "safe-buffer": "5.1.2", + "timed-out": "4.0.1", + "unzip-response": "2.0.1", + "url-parse-lax": "1.0.0" + }, + "dependencies": { + "get-stream": { + "version": "3.0.0", + "bundled": true + } + } + }, + "graceful-fs": { + "version": "4.2.2", + "bundled": true + }, + "har-schema": { + "version": "2.0.0", + "bundled": true + }, + "har-validator": { + "version": "5.1.0", + "bundled": true, + "requires": { + "ajv": "5.5.2", + "har-schema": "2.0.0" + } + }, + "has": { + "version": "1.0.3", + "bundled": true, + "requires": { + "function-bind": "1.1.1" + } + }, + "has-flag": { + "version": "3.0.0", + "bundled": true + }, + "has-symbols": { + "version": "1.0.0", + "bundled": true + }, + "has-unicode": { + "version": "2.0.1", + "bundled": true + }, + "hosted-git-info": { + "version": "2.8.2", + "bundled": true, + "requires": { + "lru-cache": "5.1.1" + } + }, + "http-cache-semantics": { + "version": "3.8.1", + "bundled": true + }, + "http-proxy-agent": { + "version": "2.1.0", + "bundled": true, + "requires": { + "agent-base": "4.3.0", + "debug": "3.1.0" + } + }, + "http-signature": { + "version": "1.2.0", + "bundled": true, + "requires": { + "assert-plus": "1.0.0", + "jsprim": "1.4.1", + "sshpk": "1.14.2" + } + }, + "https-proxy-agent": { + "version": "2.2.2", + "bundled": true, + "requires": { + "agent-base": "4.3.0", + "debug": "3.1.0" + } + }, + "humanize-ms": { + "version": "1.2.1", + "bundled": true, + "requires": { + "ms": "2.1.1" + } + }, + "iconv-lite": { + "version": "0.4.23", + "bundled": true, + "requires": { + "safer-buffer": "2.1.2" + } + }, + "iferr": { + "version": "1.0.2", + "bundled": true + }, + "ignore-walk": { + "version": "3.0.1", + "bundled": true, + "requires": { + "minimatch": "3.0.4" + } + }, + "import-lazy": { + "version": "2.1.0", + "bundled": true + }, + "imurmurhash": { + "version": "0.1.4", + "bundled": true + }, + "infer-owner": { + "version": "1.0.4", + "bundled": true + }, + "inflight": { + "version": "1.0.6", + "bundled": true, + "requires": { + "once": "1.4.0", + "wrappy": "1.0.2" + } + }, + "inherits": { + "version": "2.0.4", + "bundled": true + }, + "ini": { + "version": "1.3.5", + "bundled": true + }, + "init-package-json": { + "version": "1.10.3", + "bundled": true, + "requires": { + "glob": "7.1.4", + "npm-package-arg": "6.1.1", + "promzard": "0.3.0", + "read": "1.0.7", + "read-package-json": "2.1.0", + "semver": "5.7.1", + "validate-npm-package-license": "3.0.4", + "validate-npm-package-name": "3.0.0" + } + }, + "invert-kv": { + "version": "1.0.0", + "bundled": true + }, + "ip": { + "version": "1.1.5", + "bundled": true + }, + "ip-regex": { + "version": "2.1.0", + "bundled": true + }, + "is-callable": { + "version": "1.1.4", + "bundled": true + }, + "is-ci": { + "version": "1.1.0", + "bundled": true, + "requires": { + "ci-info": "1.6.0" + }, + "dependencies": { + "ci-info": { + "version": "1.6.0", + "bundled": true + } + } + }, + "is-cidr": { + "version": "3.0.0", + "bundled": true, + "requires": { + "cidr-regex": "2.0.10" + } + }, + "is-date-object": { + "version": "1.0.1", + "bundled": true + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "bundled": true, + "requires": { + "number-is-nan": "1.0.1" + } + }, + "is-installed-globally": { + "version": "0.1.0", + "bundled": true, + "requires": { + "global-dirs": "0.1.1", + "is-path-inside": "1.0.1" + } + }, + "is-npm": { + "version": "1.0.0", + "bundled": true + }, + "is-obj": { + "version": "1.0.1", + "bundled": true + }, + "is-path-inside": { + "version": "1.0.1", + "bundled": true, + "requires": { + "path-is-inside": "1.0.2" + } + }, + "is-redirect": { + "version": "1.0.0", + "bundled": true + }, + "is-regex": { + "version": "1.0.4", + "bundled": true, + "requires": { + "has": "1.0.3" + } + }, + "is-retry-allowed": { + "version": "1.1.0", + "bundled": true + }, + "is-stream": { + "version": "1.1.0", + "bundled": true + }, + "is-symbol": { + "version": "1.0.2", + "bundled": true, + "requires": { + "has-symbols": "1.0.0" + } + }, + "is-typedarray": { + "version": "1.0.0", + "bundled": true + }, + "isarray": { + "version": "1.0.0", + "bundled": true + }, + "isexe": { + "version": "2.0.0", + "bundled": true + }, + "isstream": { + "version": "0.1.2", + "bundled": true + }, + "jsbn": { + "version": "0.1.1", + "bundled": true, + "optional": true + }, + "json-parse-better-errors": { + "version": "1.0.2", + "bundled": true + }, + "json-schema": { + "version": "0.2.3", + "bundled": true + }, + "json-schema-traverse": { + "version": "0.3.1", + "bundled": true + }, + "json-stringify-safe": { + "version": "5.0.1", + "bundled": true + }, + "jsonparse": { + "version": "1.3.1", + "bundled": true + }, + "jsprim": { + "version": "1.4.1", + "bundled": true, + "requires": { + "assert-plus": "1.0.0", + "extsprintf": "1.3.0", + "json-schema": "0.2.3", + "verror": "1.10.0" + } + }, + "latest-version": { + "version": "3.1.0", + "bundled": true, + "requires": { + "package-json": "4.0.1" + } + }, + "lazy-property": { + "version": "1.0.0", + "bundled": true + }, + "lcid": { + "version": "1.0.0", + "bundled": true, + "requires": { + "invert-kv": "1.0.0" + } + }, + "libcipm": { + "version": "4.0.3", + "bundled": true, + "requires": { + "bin-links": "1.1.3", + "bluebird": "3.5.5", + "figgy-pudding": "3.5.1", + "find-npm-prefix": "1.0.2", + "graceful-fs": "4.2.2", + "ini": "1.3.5", + "lock-verify": "2.1.0", + "mkdirp": "0.5.1", + "npm-lifecycle": "3.1.3", + "npm-logical-tree": "1.2.1", + "npm-package-arg": "6.1.1", + "pacote": "9.5.8", + "read-package-json": "2.1.0", + "rimraf": "2.6.3", + "worker-farm": "1.7.0" + } + }, + "libnpm": { + "version": "3.0.1", + "bundled": true, + "requires": { + "bin-links": "1.1.3", + "bluebird": "3.5.5", + "find-npm-prefix": "1.0.2", + "libnpmaccess": "3.0.2", + "libnpmconfig": "1.2.1", + "libnpmhook": "5.0.3", + "libnpmorg": "1.0.1", + "libnpmpublish": "1.1.2", + "libnpmsearch": "2.0.2", + "libnpmteam": "1.0.2", + "lock-verify": "2.1.0", + "npm-lifecycle": "3.1.3", + "npm-logical-tree": "1.2.1", + "npm-package-arg": "6.1.1", + "npm-profile": "4.0.2", + "npm-registry-fetch": "4.0.0", + "npmlog": "4.1.2", + "pacote": "9.5.8", + "read-package-json": "2.1.0", + "stringify-package": "1.0.0" + } + }, + "libnpmaccess": { + "version": "3.0.2", + "bundled": true, + "requires": { + "aproba": "2.0.0", + "get-stream": "4.1.0", + "npm-package-arg": "6.1.1", + "npm-registry-fetch": "4.0.0" + } + }, + "libnpmconfig": { + "version": "1.2.1", + "bundled": true, + "requires": { + "figgy-pudding": "3.5.1", + "find-up": "3.0.0", + "ini": "1.3.5" + }, + "dependencies": { + "find-up": { + "version": "3.0.0", + "bundled": true, + "requires": { + "locate-path": "3.0.0" + } + }, + "locate-path": { + "version": "3.0.0", + "bundled": true, + "requires": { + "p-locate": "3.0.0", + "path-exists": "3.0.0" + } + }, + "p-limit": { + "version": "2.2.0", + "bundled": true, + "requires": { + "p-try": "2.2.0" + } + }, + "p-locate": { + "version": "3.0.0", + "bundled": true, + "requires": { + "p-limit": "2.2.0" + } + }, + "p-try": { + "version": "2.2.0", + "bundled": true + } + } + }, + "libnpmhook": { + "version": "5.0.3", + "bundled": true, + "requires": { + "aproba": "2.0.0", + "figgy-pudding": "3.5.1", + "get-stream": "4.1.0", + "npm-registry-fetch": "4.0.0" + } + }, + "libnpmorg": { + "version": "1.0.1", + "bundled": true, + "requires": { + "aproba": "2.0.0", + "figgy-pudding": "3.5.1", + "get-stream": "4.1.0", + "npm-registry-fetch": "4.0.0" + } + }, + "libnpmpublish": { + "version": "1.1.2", + "bundled": true, + "requires": { + "aproba": "2.0.0", + "figgy-pudding": "3.5.1", + "get-stream": "4.1.0", + "lodash.clonedeep": "4.5.0", + "normalize-package-data": "2.5.0", + "npm-package-arg": "6.1.1", + "npm-registry-fetch": "4.0.0", + "semver": "5.7.1", + "ssri": "6.0.1" + } + }, + "libnpmsearch": { + "version": "2.0.2", + "bundled": true, + "requires": { + "figgy-pudding": "3.5.1", + "get-stream": "4.1.0", + "npm-registry-fetch": "4.0.0" + } + }, + "libnpmteam": { + "version": "1.0.2", + "bundled": true, + "requires": { + "aproba": "2.0.0", + "figgy-pudding": "3.5.1", + "get-stream": "4.1.0", + "npm-registry-fetch": "4.0.0" + } + }, + "libnpx": { + "version": "10.2.0", + "bundled": true, + "requires": { + "dotenv": "5.0.1", + "npm-package-arg": "6.1.1", + "rimraf": "2.6.3", + "safe-buffer": "5.1.2", + "update-notifier": "2.5.0", + "which": "1.3.1", + "y18n": "4.0.0", + "yargs": "11.0.0" + } + }, + "locate-path": { + "version": "2.0.0", + "bundled": true, + "requires": { + "p-locate": "2.0.0", + "path-exists": "3.0.0" + } + }, + "lock-verify": { + "version": "2.1.0", + "bundled": true, + "requires": { + "npm-package-arg": "6.1.1", + "semver": "5.7.1" + } + }, + "lockfile": { + "version": "1.0.4", + "bundled": true, + "requires": { + "signal-exit": "3.0.2" + } + }, + "lodash._baseindexof": { + "version": "3.1.0", + "bundled": true + }, + "lodash._baseuniq": { + "version": "4.6.0", + "bundled": true, + "requires": { + "lodash._createset": "4.0.3", + "lodash._root": "3.0.1" + } + }, + "lodash._bindcallback": { + "version": "3.0.1", + "bundled": true + }, + "lodash._cacheindexof": { + "version": "3.0.2", + "bundled": true + }, + "lodash._createcache": { + "version": "3.1.2", + "bundled": true, + "requires": { + "lodash._getnative": "3.9.1" + } + }, + "lodash._createset": { + "version": "4.0.3", + "bundled": true + }, + "lodash._getnative": { + "version": "3.9.1", + "bundled": true + }, + "lodash._root": { + "version": "3.0.1", + "bundled": true + }, + "lodash.clonedeep": { + "version": "4.5.0", + "bundled": true + }, + "lodash.restparam": { + "version": "3.6.1", + "bundled": true + }, + "lodash.union": { + "version": "4.6.0", + "bundled": true + }, + "lodash.uniq": { + "version": "4.5.0", + "bundled": true + }, + "lodash.without": { + "version": "4.4.0", + "bundled": true + }, + "lowercase-keys": { + "version": "1.0.1", + "bundled": true + }, + "lru-cache": { + "version": "5.1.1", + "bundled": true, + "requires": { + "yallist": "3.0.3" + } + }, + "make-dir": { + "version": "1.3.0", + "bundled": true, + "requires": { + "pify": "3.0.0" + } + }, + "make-fetch-happen": { + "version": "5.0.0", + "bundled": true, + "requires": { + "agentkeepalive": "3.5.2", + "cacache": "12.0.3", + "http-cache-semantics": "3.8.1", + "http-proxy-agent": "2.1.0", + "https-proxy-agent": "2.2.2", + "lru-cache": "5.1.1", + "mississippi": "3.0.0", + "node-fetch-npm": "2.0.2", + "promise-retry": "1.1.1", + "socks-proxy-agent": "4.0.2", + "ssri": "6.0.1" + } + }, + "meant": { + "version": "1.0.1", + "bundled": true + }, + "mem": { + "version": "1.1.0", + "bundled": true, + "requires": { + "mimic-fn": "1.2.0" + } + }, + "mime-db": { + "version": "1.35.0", + "bundled": true + }, + "mime-types": { + "version": "2.1.19", + "bundled": true, + "requires": { + "mime-db": "1.35.0" + } + }, + "mimic-fn": { + "version": "1.2.0", + "bundled": true + }, + "minimatch": { + "version": "3.0.4", + "bundled": true, + "requires": { + "brace-expansion": "1.1.11" + } + }, + "minimist": { + "version": "0.0.8", + "bundled": true + }, + "minipass": { + "version": "2.3.3", + "bundled": true, + "requires": { + "safe-buffer": "5.1.2", + "yallist": "3.0.2" + }, + "dependencies": { + "yallist": { + "version": "3.0.2", + "bundled": true + } + } + }, + "minizlib": { + "version": "1.2.1", + "bundled": true, + "requires": { + "minipass": "2.3.3" + } + }, + "mississippi": { + "version": "3.0.0", + "bundled": true, + "requires": { + "concat-stream": "1.6.2", + "duplexify": "3.6.0", + "end-of-stream": "1.4.1", + "flush-write-stream": "1.0.3", + "from2": "2.3.0", + "parallel-transform": "1.1.0", + "pump": "3.0.0", + "pumpify": "1.5.1", + "stream-each": "1.2.2", + "through2": "2.0.3" + } + }, + "mkdirp": { + "version": "0.5.1", + "bundled": true, + "requires": { + "minimist": "0.0.8" + } + }, + "move-concurrently": { + "version": "1.0.1", + "bundled": true, + "requires": { + "aproba": "1.2.0", + "copy-concurrently": "1.0.5", + "fs-write-stream-atomic": "1.0.10", + "mkdirp": "0.5.1", + "rimraf": "2.6.3", + "run-queue": "1.0.3" + }, + "dependencies": { + "aproba": { + "version": "1.2.0", + "bundled": true + } + } + }, + "ms": { + "version": "2.1.1", + "bundled": true + }, + "mute-stream": { + "version": "0.0.7", + "bundled": true + }, + "node-fetch-npm": { + "version": "2.0.2", + "bundled": true, + "requires": { + "encoding": "0.1.12", + "json-parse-better-errors": "1.0.2", + "safe-buffer": "5.1.2" + } + }, + "node-gyp": { + "version": "5.0.3", + "bundled": true, + "requires": { + "env-paths": "1.0.0", + "glob": "7.1.4", + "graceful-fs": "4.2.2", + "mkdirp": "0.5.1", + "nopt": "3.0.6", + "npmlog": "4.1.2", + "request": "2.88.0", + "rimraf": "2.6.3", + "semver": "5.3.0", + "tar": "4.4.10", + "which": "1.3.1" + }, + "dependencies": { + "nopt": { + "version": "3.0.6", + "bundled": true, + "requires": { + "abbrev": "1.1.1" + } + }, + "semver": { + "version": "5.3.0", + "bundled": true + } + } + }, + "nopt": { + "version": "4.0.1", + "bundled": true, + "requires": { + "abbrev": "1.1.1", + "osenv": "0.1.5" + } + }, + "normalize-package-data": { + "version": "2.5.0", + "bundled": true, + "requires": { + "hosted-git-info": "2.8.2", + "resolve": "1.10.0", + "semver": "5.7.1", + "validate-npm-package-license": "3.0.4" + }, + "dependencies": { + "resolve": { + "version": "1.10.0", + "bundled": true, + "requires": { + "path-parse": "1.0.6" + } + } + } + }, + "npm-audit-report": { + "version": "1.3.2", + "bundled": true, + "requires": { + "cli-table3": "0.5.1", + "console-control-strings": "1.1.0" + } + }, + "npm-bundled": { + "version": "1.0.6", + "bundled": true + }, + "npm-cache-filename": { + "version": "1.0.2", + "bundled": true + }, + "npm-install-checks": { + "version": "3.0.0", + "bundled": true, + "requires": { + "semver": "5.7.1" + } + }, + "npm-lifecycle": { + "version": "3.1.3", + "bundled": true, + "requires": { + "byline": "5.0.0", + "graceful-fs": "4.2.2", + "node-gyp": "5.0.3", + "resolve-from": "4.0.0", + "slide": "1.1.6", + "uid-number": "0.0.6", + "umask": "1.1.0", + "which": "1.3.1" + } + }, + "npm-logical-tree": { + "version": "1.2.1", + "bundled": true + }, + "npm-package-arg": { + "version": "6.1.1", + "bundled": true, + "requires": { + "hosted-git-info": "2.8.2", + "osenv": "0.1.5", + "semver": "5.7.1", + "validate-npm-package-name": "3.0.0" + } + }, + "npm-packlist": { + "version": "1.4.4", + "bundled": true, + "requires": { + "ignore-walk": "3.0.1", + "npm-bundled": "1.0.6" + } + }, + "npm-pick-manifest": { + "version": "3.0.2", + "bundled": true, + "requires": { + "figgy-pudding": "3.5.1", + "npm-package-arg": "6.1.1", + "semver": "5.7.1" + } + }, + "npm-profile": { + "version": "4.0.2", + "bundled": true, + "requires": { + "aproba": "2.0.0", + "figgy-pudding": "3.5.1", + "npm-registry-fetch": "4.0.0" + } + }, + "npm-registry-fetch": { + "version": "4.0.0", + "bundled": true, + "requires": { + "JSONStream": "1.3.5", + "bluebird": "3.5.5", + "figgy-pudding": "3.5.1", + "lru-cache": "5.1.1", + "make-fetch-happen": "5.0.0", + "npm-package-arg": "6.1.1" + } + }, + "npm-run-path": { + "version": "2.0.2", + "bundled": true, + "requires": { + "path-key": "2.0.1" + } + }, + "npm-user-validate": { + "version": "1.0.0", + "bundled": true + }, + "npmlog": { + "version": "4.1.2", + "bundled": true, + "requires": { + "are-we-there-yet": "1.1.4", + "console-control-strings": "1.1.0", + "gauge": "2.7.4", + "set-blocking": "2.0.0" + } + }, + "number-is-nan": { + "version": "1.0.1", + "bundled": true + }, + "oauth-sign": { + "version": "0.9.0", + "bundled": true + }, + "object-assign": { + "version": "4.1.1", + "bundled": true + }, + "object-keys": { + "version": "1.0.12", + "bundled": true + }, + "object.getownpropertydescriptors": { + "version": "2.0.3", + "bundled": true, + "requires": { + "define-properties": "1.1.3", + "es-abstract": "1.12.0" + } + }, + "once": { + "version": "1.4.0", + "bundled": true, + "requires": { + "wrappy": "1.0.2" + } + }, + "opener": { + "version": "1.5.1", + "bundled": true + }, + "os-homedir": { + "version": "1.0.2", + "bundled": true + }, + "os-locale": { + "version": "2.1.0", + "bundled": true, + "requires": { + "execa": "0.7.0", + "lcid": "1.0.0", + "mem": "1.1.0" + } + }, + "os-tmpdir": { + "version": "1.0.2", + "bundled": true + }, + "osenv": { + "version": "0.1.5", + "bundled": true, + "requires": { + "os-homedir": "1.0.2", + "os-tmpdir": "1.0.2" + } + }, + "p-finally": { + "version": "1.0.0", + "bundled": true + }, + "p-limit": { + "version": "1.2.0", + "bundled": true, + "requires": { + "p-try": "1.0.0" + } + }, + "p-locate": { + "version": "2.0.0", + "bundled": true, + "requires": { + "p-limit": "1.2.0" + } + }, + "p-try": { + "version": "1.0.0", + "bundled": true + }, + "package-json": { + "version": "4.0.1", + "bundled": true, + "requires": { + "got": "6.7.1", + "registry-auth-token": "3.3.2", + "registry-url": "3.1.0", + "semver": "5.7.1" + } + }, + "pacote": { + "version": "9.5.8", + "bundled": true, + "requires": { + "bluebird": "3.5.5", + "cacache": "12.0.3", + "chownr": "1.1.2", + "figgy-pudding": "3.5.1", + "get-stream": "4.1.0", + "glob": "7.1.4", + "infer-owner": "1.0.4", + "lru-cache": "5.1.1", + "make-fetch-happen": "5.0.0", + "minimatch": "3.0.4", + "minipass": "2.3.5", + "mississippi": "3.0.0", + "mkdirp": "0.5.1", + "normalize-package-data": "2.5.0", + "npm-package-arg": "6.1.1", + "npm-packlist": "1.4.4", + "npm-pick-manifest": "3.0.2", + "npm-registry-fetch": "4.0.0", + "osenv": "0.1.5", + "promise-inflight": "1.0.1", + "promise-retry": "1.1.1", + "protoduck": "5.0.1", + "rimraf": "2.6.3", + "safe-buffer": "5.1.2", + "semver": "5.7.1", + "ssri": "6.0.1", + "tar": "4.4.10", + "unique-filename": "1.1.1", + "which": "1.3.1" + }, + "dependencies": { + "minipass": { + "version": "2.3.5", + "bundled": true, + "requires": { + "safe-buffer": "5.1.2", + "yallist": "3.0.3" + } + } + } + }, + "parallel-transform": { + "version": "1.1.0", + "bundled": true, + "requires": { + "cyclist": "0.2.2", + "inherits": "2.0.4", + "readable-stream": "2.3.6" + }, + "dependencies": { + "readable-stream": { + "version": "2.3.6", + "bundled": true, + "requires": { + "core-util-is": "1.0.2", + "inherits": "2.0.4", + "isarray": "1.0.0", + "process-nextick-args": "2.0.0", + "safe-buffer": "5.1.2", + "string_decoder": "1.1.1", + "util-deprecate": "1.0.2" + } + }, + "string_decoder": { + "version": "1.1.1", + "bundled": true, + "requires": { + "safe-buffer": "5.1.2" + } + } + } + }, + "path-exists": { + "version": "3.0.0", + "bundled": true + }, + "path-is-absolute": { + "version": "1.0.1", + "bundled": true + }, + "path-is-inside": { + "version": "1.0.2", + "bundled": true + }, + "path-key": { + "version": "2.0.1", + "bundled": true + }, + "path-parse": { + "version": "1.0.6", + "bundled": true + }, + "performance-now": { + "version": "2.1.0", + "bundled": true + }, + "pify": { + "version": "3.0.0", + "bundled": true + }, + "prepend-http": { + "version": "1.0.4", + "bundled": true + }, + "process-nextick-args": { + "version": "2.0.0", + "bundled": true + }, + "promise-inflight": { + "version": "1.0.1", + "bundled": true + }, + "promise-retry": { + "version": "1.1.1", + "bundled": true, + "requires": { + "err-code": "1.1.2", + "retry": "0.10.1" + }, + "dependencies": { + "retry": { + "version": "0.10.1", + "bundled": true + } + } + }, + "promzard": { + "version": "0.3.0", + "bundled": true, + "requires": { + "read": "1.0.7" + } + }, + "proto-list": { + "version": "1.2.4", + "bundled": true + }, + "protoduck": { + "version": "5.0.1", + "bundled": true, + "requires": { + "genfun": "5.0.0" + } + }, + "prr": { + "version": "1.0.1", + "bundled": true + }, + "pseudomap": { + "version": "1.0.2", + "bundled": true + }, + "psl": { + "version": "1.1.29", + "bundled": true + }, + "pump": { + "version": "3.0.0", + "bundled": true, + "requires": { + "end-of-stream": "1.4.1", + "once": "1.4.0" + } + }, + "pumpify": { + "version": "1.5.1", + "bundled": true, + "requires": { + "duplexify": "3.6.0", + "inherits": "2.0.4", + "pump": "2.0.1" + }, + "dependencies": { + "pump": { + "version": "2.0.1", + "bundled": true, + "requires": { + "end-of-stream": "1.4.1", + "once": "1.4.0" + } + } + } + }, + "punycode": { + "version": "1.4.1", + "bundled": true + }, + "qrcode-terminal": { + "version": "0.12.0", + "bundled": true + }, + "qs": { + "version": "6.5.2", + "bundled": true + }, + "query-string": { + "version": "6.8.2", + "bundled": true, + "requires": { + "decode-uri-component": "0.2.0", + "split-on-first": "1.1.0", + "strict-uri-encode": "2.0.0" + } + }, + "qw": { + "version": "1.0.1", + "bundled": true + }, + "rc": { + "version": "1.2.7", + "bundled": true, + "requires": { + "deep-extend": "0.5.1", + "ini": "1.3.5", + "minimist": "1.2.0", + "strip-json-comments": "2.0.1" + }, + "dependencies": { + "minimist": { + "version": "1.2.0", + "bundled": true + } + } + }, + "read": { + "version": "1.0.7", + "bundled": true, + "requires": { + "mute-stream": "0.0.7" + } + }, + "read-cmd-shim": { + "version": "1.0.4", + "bundled": true, + "requires": { + "graceful-fs": "4.2.2" + } + }, + "read-installed": { + "version": "4.0.3", + "bundled": true, + "requires": { + "debuglog": "1.0.1", + "graceful-fs": "4.2.2", + "read-package-json": "2.1.0", + "readdir-scoped-modules": "1.1.0", + "semver": "5.7.1", + "slide": "1.1.6", + "util-extend": "1.0.3" + } + }, + "read-package-json": { + "version": "2.1.0", + "bundled": true, + "requires": { + "glob": "7.1.4", + "graceful-fs": "4.2.2", + "json-parse-better-errors": "1.0.2", + "normalize-package-data": "2.5.0", + "slash": "1.0.0" + } + }, + "read-package-tree": { + "version": "5.3.1", + "bundled": true, + "requires": { + "read-package-json": "2.1.0", + "readdir-scoped-modules": "1.1.0", + "util-promisify": "2.1.0" + } + }, + "readable-stream": { + "version": "3.4.0", + "bundled": true, + "requires": { + "inherits": "2.0.4", + "string_decoder": "1.2.0", + "util-deprecate": "1.0.2" + } + }, + "readdir-scoped-modules": { + "version": "1.1.0", + "bundled": true, + "requires": { + "debuglog": "1.0.1", + "dezalgo": "1.0.3", + "graceful-fs": "4.2.2", + "once": "1.4.0" + } + }, + "registry-auth-token": { + "version": "3.3.2", + "bundled": true, + "requires": { + "rc": "1.2.7", + "safe-buffer": "5.1.2" + } + }, + "registry-url": { + "version": "3.1.0", + "bundled": true, + "requires": { + "rc": "1.2.7" + } + }, + "request": { + "version": "2.88.0", + "bundled": true, + "requires": { + "aws-sign2": "0.7.0", + "aws4": "1.8.0", + "caseless": "0.12.0", + "combined-stream": "1.0.6", + "extend": "3.0.2", + "forever-agent": "0.6.1", + "form-data": "2.3.2", + "har-validator": "5.1.0", + "http-signature": "1.2.0", + "is-typedarray": "1.0.0", + "isstream": "0.1.2", + "json-stringify-safe": "5.0.1", + "mime-types": "2.1.19", + "oauth-sign": "0.9.0", + "performance-now": "2.1.0", + "qs": "6.5.2", + "safe-buffer": "5.1.2", + "tough-cookie": "2.4.3", + "tunnel-agent": "0.6.0", + "uuid": "3.3.2" + } + }, + "require-directory": { + "version": "2.1.1", + "bundled": true + }, + "require-main-filename": { + "version": "1.0.1", + "bundled": true + }, + "resolve-from": { + "version": "4.0.0", + "bundled": true + }, + "retry": { + "version": "0.12.0", + "bundled": true + }, + "rimraf": { + "version": "2.6.3", + "bundled": true, + "requires": { + "glob": "7.1.4" + } + }, + "run-queue": { + "version": "1.0.3", + "bundled": true, + "requires": { + "aproba": "1.2.0" + }, + "dependencies": { + "aproba": { + "version": "1.2.0", + "bundled": true + } + } + }, + "safe-buffer": { + "version": "5.1.2", + "bundled": true + }, + "safer-buffer": { + "version": "2.1.2", + "bundled": true + }, + "semver": { + "version": "5.7.1", + "bundled": true + }, + "semver-diff": { + "version": "2.1.0", + "bundled": true, + "requires": { + "semver": "5.7.1" + } + }, + "set-blocking": { + "version": "2.0.0", + "bundled": true + }, + "sha": { + "version": "3.0.0", + "bundled": true, + "requires": { + "graceful-fs": "4.2.2" + } + }, + "shebang-command": { + "version": "1.2.0", + "bundled": true, + "requires": { + "shebang-regex": "1.0.0" + } + }, + "shebang-regex": { + "version": "1.0.0", + "bundled": true + }, + "signal-exit": { + "version": "3.0.2", + "bundled": true + }, + "slash": { + "version": "1.0.0", + "bundled": true + }, + "slide": { + "version": "1.1.6", + "bundled": true + }, + "smart-buffer": { + "version": "4.0.2", + "bundled": true + }, + "socks": { + "version": "2.3.2", + "bundled": true, + "requires": { + "ip": "1.1.5", + "smart-buffer": "4.0.2" + } + }, + "socks-proxy-agent": { + "version": "4.0.2", + "bundled": true, + "requires": { + "agent-base": "4.2.1", + "socks": "2.3.2" + }, + "dependencies": { + "agent-base": { + "version": "4.2.1", + "bundled": true, + "requires": { + "es6-promisify": "5.0.0" + } + } + } + }, + "sorted-object": { + "version": "2.0.1", + "bundled": true + }, + "sorted-union-stream": { + "version": "2.1.3", + "bundled": true, + "requires": { + "from2": "1.3.0", + "stream-iterate": "1.2.0" + }, + "dependencies": { + "from2": { + "version": "1.3.0", + "bundled": true, + "requires": { + "inherits": "2.0.4", + "readable-stream": "1.1.14" + } + }, + "isarray": { + "version": "0.0.1", + "bundled": true + }, + "readable-stream": { + "version": "1.1.14", + "bundled": true, + "requires": { + "core-util-is": "1.0.2", + "inherits": "2.0.4", + "isarray": "0.0.1", + "string_decoder": "0.10.31" + } + }, + "string_decoder": { + "version": "0.10.31", + "bundled": true + } + } + }, + "spdx-correct": { + "version": "3.0.0", + "bundled": true, + "requires": { + "spdx-expression-parse": "3.0.0", + "spdx-license-ids": "3.0.3" + } + }, + "spdx-exceptions": { + "version": "2.1.0", + "bundled": true + }, + "spdx-expression-parse": { + "version": "3.0.0", + "bundled": true, + "requires": { + "spdx-exceptions": "2.1.0", + "spdx-license-ids": "3.0.3" + } + }, + "spdx-license-ids": { + "version": "3.0.3", + "bundled": true + }, + "split-on-first": { + "version": "1.1.0", + "bundled": true + }, + "sshpk": { + "version": "1.14.2", + "bundled": true, + "requires": { + "asn1": "0.2.4", + "assert-plus": "1.0.0", + "bcrypt-pbkdf": "1.0.2", + "dashdash": "1.14.1", + "ecc-jsbn": "0.1.2", + "getpass": "0.1.7", + "jsbn": "0.1.1", + "safer-buffer": "2.1.2", + "tweetnacl": "0.14.5" + } + }, + "ssri": { + "version": "6.0.1", + "bundled": true, + "requires": { + "figgy-pudding": "3.5.1" + } + }, + "stream-each": { + "version": "1.2.2", + "bundled": true, + "requires": { + "end-of-stream": "1.4.1", + "stream-shift": "1.0.0" + } + }, + "stream-iterate": { + "version": "1.2.0", + "bundled": true, + "requires": { + "readable-stream": "2.3.6", + "stream-shift": "1.0.0" + }, + "dependencies": { + "readable-stream": { + "version": "2.3.6", + "bundled": true, + "requires": { + "core-util-is": "1.0.2", + "inherits": "2.0.4", + "isarray": "1.0.0", + "process-nextick-args": "2.0.0", + "safe-buffer": "5.1.2", + "string_decoder": "1.1.1", + "util-deprecate": "1.0.2" + } + }, + "string_decoder": { + "version": "1.1.1", + "bundled": true, + "requires": { + "safe-buffer": "5.1.2" + } + } + } + }, + "stream-shift": { + "version": "1.0.0", + "bundled": true + }, + "strict-uri-encode": { + "version": "2.0.0", + "bundled": true + }, + "string-width": { + "version": "2.1.1", + "bundled": true, + "requires": { + "is-fullwidth-code-point": "2.0.0", + "strip-ansi": "4.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.0", + "bundled": true + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "bundled": true + }, + "strip-ansi": { + "version": "4.0.0", + "bundled": true, + "requires": { + "ansi-regex": "3.0.0" + } + } + } + }, + "string_decoder": { + "version": "1.2.0", + "bundled": true, + "requires": { + "safe-buffer": "5.1.2" + } + }, + "stringify-package": { + "version": "1.0.0", + "bundled": true + }, + "strip-ansi": { + "version": "3.0.1", + "bundled": true, + "requires": { + "ansi-regex": "2.1.1" + } + }, + "strip-eof": { + "version": "1.0.0", + "bundled": true + }, + "strip-json-comments": { + "version": "2.0.1", + "bundled": true + }, + "supports-color": { + "version": "5.4.0", + "bundled": true, + "requires": { + "has-flag": "3.0.0" + } + }, + "tar": { + "version": "4.4.10", + "bundled": true, + "requires": { + "chownr": "1.1.2", + "fs-minipass": "1.2.6", + "minipass": "2.3.5", + "minizlib": "1.2.1", + "mkdirp": "0.5.1", + "safe-buffer": "5.1.2", + "yallist": "3.0.3" + }, + "dependencies": { + "minipass": { + "version": "2.3.5", + "bundled": true, + "requires": { + "safe-buffer": "5.1.2", + "yallist": "3.0.3" + } + }, + "yallist": { + "version": "3.0.3", + "bundled": true + } + } + }, + "term-size": { + "version": "1.2.0", + "bundled": true, + "requires": { + "execa": "0.7.0" + } + }, + "text-table": { + "version": "0.2.0", + "bundled": true + }, + "through": { + "version": "2.3.8", + "bundled": true + }, + "through2": { + "version": "2.0.3", + "bundled": true, + "requires": { + "readable-stream": "2.3.6", + "xtend": "4.0.1" + }, + "dependencies": { + "readable-stream": { + "version": "2.3.6", + "bundled": true, + "requires": { + "core-util-is": "1.0.2", + "inherits": "2.0.4", + "isarray": "1.0.0", + "process-nextick-args": "2.0.0", + "safe-buffer": "5.1.2", + "string_decoder": "1.1.1", + "util-deprecate": "1.0.2" + } + }, + "string_decoder": { + "version": "1.1.1", + "bundled": true, + "requires": { + "safe-buffer": "5.1.2" + } + } + } + }, + "timed-out": { + "version": "4.0.1", + "bundled": true + }, + "tiny-relative-date": { + "version": "1.3.0", + "bundled": true + }, + "tough-cookie": { + "version": "2.4.3", + "bundled": true, + "requires": { + "psl": "1.1.29", + "punycode": "1.4.1" + } + }, + "tunnel-agent": { + "version": "0.6.0", + "bundled": true, + "requires": { + "safe-buffer": "5.1.2" + } + }, + "tweetnacl": { + "version": "0.14.5", + "bundled": true, + "optional": true + }, + "typedarray": { + "version": "0.0.6", + "bundled": true + }, + "uid-number": { + "version": "0.0.6", + "bundled": true + }, + "umask": { + "version": "1.1.0", + "bundled": true + }, + "unique-filename": { + "version": "1.1.1", + "bundled": true, + "requires": { + "unique-slug": "2.0.0" + } + }, + "unique-slug": { + "version": "2.0.0", + "bundled": true, + "requires": { + "imurmurhash": "0.1.4" + } + }, + "unique-string": { + "version": "1.0.0", + "bundled": true, + "requires": { + "crypto-random-string": "1.0.0" + } + }, + "unpipe": { + "version": "1.0.0", + "bundled": true + }, + "unzip-response": { + "version": "2.0.1", + "bundled": true + }, + "update-notifier": { + "version": "2.5.0", + "bundled": true, + "requires": { + "boxen": "1.3.0", + "chalk": "2.4.1", + "configstore": "3.1.2", + "import-lazy": "2.1.0", + "is-ci": "1.1.0", + "is-installed-globally": "0.1.0", + "is-npm": "1.0.0", + "latest-version": "3.1.0", + "semver-diff": "2.1.0", + "xdg-basedir": "3.0.0" + } + }, + "url-parse-lax": { + "version": "1.0.0", + "bundled": true, + "requires": { + "prepend-http": "1.0.4" + } + }, + "util-deprecate": { + "version": "1.0.2", + "bundled": true + }, + "util-extend": { + "version": "1.0.3", + "bundled": true + }, + "util-promisify": { + "version": "2.1.0", + "bundled": true, + "requires": { + "object.getownpropertydescriptors": "2.0.3" } }, - "underscore": { - "version": "1.6.0", - "resolved": "https://npm.bmtrip.io/underscore/-/underscore-1.6.0.tgz", - "integrity": "sha1-izixDKze9jM3uLJOT/htRa6lKag=", - "dev": true - } - } - }, - "json-schema": { - "version": "0.2.3", - "resolved": "https://npm.bmtrip.io/json-schema/-/json-schema-0.2.3.tgz", - "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=", - "dev": true - }, - "json-stringify-safe": { - "version": "5.0.1", - "resolved": "https://npm.bmtrip.io/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", - "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=", - "dev": true - }, - "jsonpointer": { - "version": "4.0.1", - "resolved": "https://npm.bmtrip.io/jsonpointer/-/jsonpointer-4.0.1.tgz", - "integrity": "sha1-T9kss04OnbPInIYi7PUfm5eMbLk=", - "dev": true - }, - "jsprim": { - "version": "1.4.1", - "resolved": "https://npm.bmtrip.io/jsprim/-/jsprim-1.4.1.tgz", - "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=", - "dev": true, - "requires": { - "assert-plus": "1.0.0", - "extsprintf": "1.3.0", - "json-schema": "0.2.3", - "verror": "1.10.0" - }, - "dependencies": { - "assert-plus": { - "version": "1.0.0", - "resolved": "https://npm.bmtrip.io/assert-plus/-/assert-plus-1.0.0.tgz", - "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", - "dev": true - } - } - }, - "kind-of": { - "version": "3.2.2", - "resolved": "https://npm.bmtrip.io/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - }, - "lazy-cache": { - "version": "1.0.4", - "resolved": "https://npm.bmtrip.io/lazy-cache/-/lazy-cache-1.0.4.tgz", - "integrity": "sha1-odePw6UEdMuAhF07O24dpJpEbo4=", - "dev": true - }, - "lcov-parse": { - "version": "0.0.10", - "resolved": "https://npm.bmtrip.io/lcov-parse/-/lcov-parse-0.0.10.tgz", - "integrity": "sha1-GwuP+ayceIklBYK3C3ExXZ2m2aM=", - "dev": true - }, - "lodash": { - "version": "0.9.2", - "resolved": "https://npm.bmtrip.io/lodash/-/lodash-0.9.2.tgz", - "integrity": "sha1-jzSZxSRdNG1oLlsNO0B2fgnxqSw=", - "dev": true - }, - "log-driver": { - "version": "1.2.5", - "resolved": "https://npm.bmtrip.io/log-driver/-/log-driver-1.2.5.tgz", - "integrity": "sha1-euTsJXMC/XkNVXyxDJcQDYV7AFY=", - "dev": true - }, - "longest": { - "version": "1.0.1", - "resolved": "https://npm.bmtrip.io/longest/-/longest-1.0.1.tgz", - "integrity": "sha1-MKCy2jj3N3DoKUoNIuZiXtd9AJc=", - "dev": true - }, - "lru-cache": { - "version": "2.7.3", - "resolved": "https://npm.bmtrip.io/lru-cache/-/lru-cache-2.7.3.tgz", - "integrity": "sha1-bUUk6LlV+V1PW1iFHOId1y+06VI=", - "dev": true - }, - "maxmin": { - "version": "0.2.2", - "resolved": "https://npm.bmtrip.io/maxmin/-/maxmin-0.2.2.tgz", - "integrity": "sha1-o2ztjMIuOrzRCM+3l6OktAJ1WT8=", - "dev": true, - "requires": { - "chalk": "^0.5.0", - "figures": "^1.0.1", - "gzip-size": "^0.2.0", - "pretty-bytes": "^0.1.0" - }, - "dependencies": { - "ansi-regex": { - "version": "0.2.1", - "resolved": "https://npm.bmtrip.io/ansi-regex/-/ansi-regex-0.2.1.tgz", - "integrity": "sha1-DY6UaWej2BQ/k+JOKYUl/BsiNfk=", - "dev": true + "uuid": { + "version": "3.3.2", + "bundled": true }, - "ansi-styles": { - "version": "1.1.0", - "resolved": "https://npm.bmtrip.io/ansi-styles/-/ansi-styles-1.1.0.tgz", - "integrity": "sha1-6uy/Zs1waIJ2Cy9GkVgrj1XXp94=", - "dev": true + "validate-npm-package-license": { + "version": "3.0.4", + "bundled": true, + "requires": { + "spdx-correct": "3.0.0", + "spdx-expression-parse": "3.0.0" + } }, - "chalk": { - "version": "0.5.1", - "resolved": "https://npm.bmtrip.io/chalk/-/chalk-0.5.1.tgz", - "integrity": "sha1-Zjs6ZItotV0EaQ1JFnqoN4WPIXQ=", - "dev": true, + "validate-npm-package-name": { + "version": "3.0.0", + "bundled": true, "requires": { - "ansi-styles": "^1.1.0", - "escape-string-regexp": "^1.0.0", - "has-ansi": "^0.1.0", - "strip-ansi": "^0.3.0", - "supports-color": "^0.2.0" + "builtins": "1.0.3" } }, - "has-ansi": { - "version": "0.1.0", - "resolved": "https://npm.bmtrip.io/has-ansi/-/has-ansi-0.1.0.tgz", - "integrity": "sha1-hPJlqujA5qiKEtcCKJS3VoiUxi4=", - "dev": true, + "verror": { + "version": "1.10.0", + "bundled": true, "requires": { - "ansi-regex": "^0.2.0" + "assert-plus": "1.0.0", + "core-util-is": "1.0.2", + "extsprintf": "1.3.0" } }, - "strip-ansi": { - "version": "0.3.0", - "resolved": "https://npm.bmtrip.io/strip-ansi/-/strip-ansi-0.3.0.tgz", - "integrity": "sha1-JfSOoiynkYfzF0pNuHWTR7sSYiA=", - "dev": true, + "wcwidth": { + "version": "1.0.1", + "bundled": true, "requires": { - "ansi-regex": "^0.2.1" + "defaults": "1.0.3" } }, - "supports-color": { - "version": "0.2.0", - "resolved": "https://npm.bmtrip.io/supports-color/-/supports-color-0.2.0.tgz", - "integrity": "sha1-2S3iaU6z9nMjlz1649i1W0wiGQo=", - "dev": true + "which": { + "version": "1.3.1", + "bundled": true, + "requires": { + "isexe": "2.0.0" + } + }, + "which-module": { + "version": "2.0.0", + "bundled": true + }, + "wide-align": { + "version": "1.1.2", + "bundled": true, + "requires": { + "string-width": "1.0.2" + }, + "dependencies": { + "string-width": { + "version": "1.0.2", + "bundled": true, + "requires": { + "code-point-at": "1.1.0", + "is-fullwidth-code-point": "1.0.0", + "strip-ansi": "3.0.1" + } + } + } + }, + "widest-line": { + "version": "2.0.0", + "bundled": true, + "requires": { + "string-width": "2.1.1" + } + }, + "worker-farm": { + "version": "1.7.0", + "bundled": true, + "requires": { + "errno": "0.1.7" + } + }, + "wrap-ansi": { + "version": "2.1.0", + "bundled": true, + "requires": { + "string-width": "1.0.2", + "strip-ansi": "3.0.1" + }, + "dependencies": { + "string-width": { + "version": "1.0.2", + "bundled": true, + "requires": { + "code-point-at": "1.1.0", + "is-fullwidth-code-point": "1.0.0", + "strip-ansi": "3.0.1" + } + } + } + }, + "wrappy": { + "version": "1.0.2", + "bundled": true + }, + "write-file-atomic": { + "version": "2.4.3", + "bundled": true, + "requires": { + "graceful-fs": "4.2.2", + "imurmurhash": "0.1.4", + "signal-exit": "3.0.2" + } + }, + "xdg-basedir": { + "version": "3.0.0", + "bundled": true + }, + "xtend": { + "version": "4.0.1", + "bundled": true + }, + "y18n": { + "version": "4.0.0", + "bundled": true + }, + "yallist": { + "version": "3.0.3", + "bundled": true + }, + "yargs": { + "version": "11.0.0", + "bundled": true, + "requires": { + "cliui": "4.1.0", + "decamelize": "1.2.0", + "find-up": "2.1.0", + "get-caller-file": "1.0.2", + "os-locale": "2.1.0", + "require-directory": "2.1.1", + "require-main-filename": "1.0.1", + "set-blocking": "2.0.0", + "string-width": "2.1.1", + "which-module": "2.0.0", + "y18n": "3.2.1", + "yargs-parser": "9.0.2" + }, + "dependencies": { + "y18n": { + "version": "3.2.1", + "bundled": true + } + } + }, + "yargs-parser": { + "version": "9.0.2", + "bundled": true, + "requires": { + "camelcase": "4.1.0" + } } } }, - "mime-db": { - "version": "1.38.0", - "resolved": "https://npm.bmtrip.io/mime-db/-/mime-db-1.38.0.tgz", - "integrity": "sha512-bqVioMFFzc2awcdJZIzR3HjZFX20QhilVS7hytkKrv7xFAn8bM1gzc/FOX2awLISvWe0PV8ptFKcon+wZ5qYkg==", - "dev": true - }, - "mime-types": { - "version": "2.1.22", - "resolved": "https://npm.bmtrip.io/mime-types/-/mime-types-2.1.22.tgz", - "integrity": "sha512-aGl6TZGnhm/li6F7yx82bJiBZwgiEa4Hf6CNr8YO+r5UHr53tSTYZb102zyU50DOWWKeOv0uQLRL0/9EiKWCog==", - "dev": true, - "requires": { - "mime-db": "~1.38.0" - } - }, - "minimatch": { - "version": "0.2.14", - "resolved": "https://npm.bmtrip.io/minimatch/-/minimatch-0.2.14.tgz", - "integrity": "sha1-x054BXT2PG+aCQ6Q775u9TpqdWo=", - "dev": true, - "requires": { - "lru-cache": "2", - "sigmund": "~1.0.0" - } - }, - "minimist": { - "version": "1.2.0", - "resolved": "https://npm.bmtrip.io/minimist/-/minimist-1.2.0.tgz", - "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", - "dev": true - }, - "ms": { - "version": "2.0.0", - "resolved": "https://npm.bmtrip.io/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", - "dev": true - }, - "nodeunit": { - "version": "0.9.5", - "resolved": "https://npm.bmtrip.io/nodeunit/-/nodeunit-0.9.5.tgz", - "integrity": "sha1-C2MjaAB9lGUczwoYmZgHmC8HOGY=", - "dev": true, - "requires": { - "tap": "^7.0.0" - } - }, - "nopt": { - "version": "1.0.10", - "resolved": "https://npm.bmtrip.io/nopt/-/nopt-1.0.10.tgz", - "integrity": "sha1-bd0hvSoxQXuScn3Vhfim83YI6+4=", - "dev": true, - "requires": { - "abbrev": "1" - } - }, "nyc": { "version": "7.1.0", - "resolved": "https://npm.bmtrip.io/nyc/-/nyc-7.1.0.tgz", + "resolved": "http://registry.npm.taobao.org/nyc/download/nyc-7.1.0.tgz", "integrity": "sha1-jhSXHzoV0au+x6xhDvVMuInp/7Q=", "dev": true, "requires": { - "arrify": "^1.0.1", - "caching-transform": "^1.0.0", - "convert-source-map": "^1.3.0", - "default-require-extensions": "^1.0.0", - "find-cache-dir": "^0.1.1", - "find-up": "^1.1.2", - "foreground-child": "^1.5.3", - "glob": "^7.0.3", - "istanbul-lib-coverage": "^1.0.0-alpha.4", - "istanbul-lib-hook": "^1.0.0-alpha.4", - "istanbul-lib-instrument": "^1.1.0-alpha.3", - "istanbul-lib-report": "^1.0.0-alpha.3", - "istanbul-lib-source-maps": "^1.0.0-alpha.10", - "istanbul-reports": "^1.0.0-alpha.8", - "md5-hex": "^1.2.0", - "micromatch": "^2.3.11", - "mkdirp": "^0.5.0", - "pkg-up": "^1.0.0", - "resolve-from": "^2.0.0", - "rimraf": "^2.5.4", - "signal-exit": "^3.0.0", - "spawn-wrap": "^1.2.4", - "test-exclude": "^1.1.0", - "yargs": "^4.8.1", - "yargs-parser": "^2.4.1" + "arrify": "1.0.1", + "caching-transform": "1.0.1", + "convert-source-map": "1.3.0", + "default-require-extensions": "1.0.0", + "find-cache-dir": "0.1.1", + "find-up": "1.1.2", + "foreground-child": "1.5.3", + "glob": "7.0.5", + "istanbul-lib-coverage": "1.0.0-alpha.4", + "istanbul-lib-hook": "1.0.0-alpha.4", + "istanbul-lib-instrument": "1.1.0-alpha.4", + "istanbul-lib-report": "1.0.0-alpha.3", + "istanbul-lib-source-maps": "1.0.0-alpha.10", + "istanbul-reports": "1.0.0-alpha.8", + "md5-hex": "1.3.0", + "micromatch": "2.3.11", + "mkdirp": "0.5.1", + "pkg-up": "1.0.0", + "resolve-from": "2.0.0", + "rimraf": "2.5.4", + "signal-exit": "3.0.0", + "spawn-wrap": "1.2.4", + "test-exclude": "1.1.0", + "yargs": "4.8.1", + "yargs-parser": "2.4.1" }, "dependencies": { "align-text": { "version": "0.1.4", "bundled": true, "dev": true, - "optional": true, "requires": { - "kind-of": "^3.0.2", - "longest": "^1.0.1", - "repeat-string": "^1.5.2" + "kind-of": "3.0.3", + "longest": "1.0.1", + "repeat-string": "1.5.4" } }, "amdefine": { @@ -1393,7 +4441,7 @@ "bundled": true, "dev": true, "requires": { - "arr-flatten": "^1.0.1" + "arr-flatten": "1.0.1" } }, "arr-flatten": { @@ -1421,10 +4469,10 @@ "bundled": true, "dev": true, "requires": { - "babel-runtime": "^6.0.0", - "chalk": "^1.1.0", - "esutils": "^2.0.2", - "js-tokens": "^2.0.0" + "babel-runtime": "6.9.2", + "chalk": "1.1.3", + "esutils": "2.0.2", + "js-tokens": "2.0.0" } }, "babel-generator": { @@ -1432,12 +4480,12 @@ "bundled": true, "dev": true, "requires": { - "babel-messages": "^6.8.0", - "babel-runtime": "^6.9.0", - "babel-types": "^6.10.2", - "detect-indent": "^3.0.1", - "lodash": "^4.2.0", - "source-map": "^0.5.0" + "babel-messages": "6.8.0", + "babel-runtime": "6.9.2", + "babel-types": "6.11.1", + "detect-indent": "3.0.1", + "lodash": "4.13.1", + "source-map": "0.5.6" } }, "babel-messages": { @@ -1445,7 +4493,7 @@ "bundled": true, "dev": true, "requires": { - "babel-runtime": "^6.0.0" + "babel-runtime": "6.9.2" } }, "babel-runtime": { @@ -1453,8 +4501,8 @@ "bundled": true, "dev": true, "requires": { - "core-js": "^2.4.0", - "regenerator-runtime": "^0.9.5" + "core-js": "2.4.1", + "regenerator-runtime": "0.9.5" } }, "babel-template": { @@ -1462,11 +4510,11 @@ "bundled": true, "dev": true, "requires": { - "babel-runtime": "^6.9.0", - "babel-traverse": "^6.9.0", - "babel-types": "^6.9.0", - "babylon": "^6.7.0", - "lodash": "^4.2.0" + "babel-runtime": "6.9.2", + "babel-traverse": "6.11.4", + "babel-types": "6.11.1", + "babylon": "6.8.4", + "lodash": "4.13.1" } }, "babel-traverse": { @@ -1474,15 +4522,15 @@ "bundled": true, "dev": true, "requires": { - "babel-code-frame": "^6.8.0", - "babel-messages": "^6.8.0", - "babel-runtime": "^6.9.0", - "babel-types": "^6.9.0", - "babylon": "^6.7.0", - "debug": "^2.2.0", - "globals": "^8.3.0", - "invariant": "^2.2.0", - "lodash": "^4.2.0" + "babel-code-frame": "6.11.0", + "babel-messages": "6.8.0", + "babel-runtime": "6.9.2", + "babel-types": "6.11.1", + "babylon": "6.8.4", + "debug": "2.2.0", + "globals": "8.18.0", + "invariant": "2.2.1", + "lodash": "4.13.1" } }, "babel-types": { @@ -1490,11 +4538,11 @@ "bundled": true, "dev": true, "requires": { - "babel-runtime": "^6.9.1", - "babel-traverse": "^6.9.0", - "esutils": "^2.0.2", - "lodash": "^4.2.0", - "to-fast-properties": "^1.0.1" + "babel-runtime": "6.9.2", + "babel-traverse": "6.11.4", + "esutils": "2.0.2", + "lodash": "4.13.1", + "to-fast-properties": "1.0.2" } }, "babylon": { @@ -1502,7 +4550,7 @@ "bundled": true, "dev": true, "requires": { - "babel-runtime": "^6.0.0" + "babel-runtime": "6.9.2" } }, "balanced-match": { @@ -1515,7 +4563,7 @@ "bundled": true, "dev": true, "requires": { - "balanced-match": "^0.4.1", + "balanced-match": "0.4.2", "concat-map": "0.0.1" } }, @@ -1524,9 +4572,9 @@ "bundled": true, "dev": true, "requires": { - "expand-range": "^1.8.1", - "preserve": "^0.2.0", - "repeat-element": "^1.1.2" + "expand-range": "1.8.2", + "preserve": "0.2.0", + "repeat-element": "1.1.2" } }, "builtin-modules": { @@ -1539,9 +4587,9 @@ "bundled": true, "dev": true, "requires": { - "md5-hex": "^1.2.0", - "mkdirp": "^0.5.1", - "write-file-atomic": "^1.1.4" + "md5-hex": "1.3.0", + "mkdirp": "0.5.1", + "write-file-atomic": "1.1.4" } }, "camelcase": { @@ -1556,8 +4604,8 @@ "dev": true, "optional": true, "requires": { - "align-text": "^0.1.3", - "lazy-cache": "^1.0.3" + "align-text": "0.1.4", + "lazy-cache": "1.0.4" } }, "chalk": { @@ -1565,11 +4613,11 @@ "bundled": true, "dev": true, "requires": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" + "ansi-styles": "2.2.1", + "escape-string-regexp": "1.0.5", + "has-ansi": "2.0.0", + "strip-ansi": "3.0.1", + "supports-color": "2.0.0" } }, "cliui": { @@ -1578,8 +4626,8 @@ "dev": true, "optional": true, "requires": { - "center-align": "^0.1.1", - "right-align": "^0.1.1", + "center-align": "0.1.3", + "right-align": "0.1.3", "wordwrap": "0.0.2" }, "dependencies": { @@ -1596,7 +4644,7 @@ "bundled": true, "dev": true, "requires": { - "number-is-nan": "^1.0.0" + "number-is-nan": "1.0.0" } }, "commondir": { @@ -1624,8 +4672,8 @@ "bundled": true, "dev": true, "requires": { - "lru-cache": "^4.0.1", - "which": "^1.2.9" + "lru-cache": "4.0.1", + "which": "1.2.10" } }, "debug": { @@ -1646,7 +4694,7 @@ "bundled": true, "dev": true, "requires": { - "strip-bom": "^2.0.0" + "strip-bom": "2.0.0" } }, "detect-indent": { @@ -1654,9 +4702,9 @@ "bundled": true, "dev": true, "requires": { - "get-stdin": "^4.0.1", - "minimist": "^1.1.0", - "repeating": "^1.1.0" + "get-stdin": "4.0.1", + "minimist": "1.2.0", + "repeating": "1.1.3" }, "dependencies": { "minimist": { @@ -1671,7 +4719,7 @@ "bundled": true, "dev": true, "requires": { - "is-arrayish": "^0.2.1" + "is-arrayish": "0.2.1" } }, "escape-string-regexp": { @@ -1689,7 +4737,7 @@ "bundled": true, "dev": true, "requires": { - "is-posix-bracket": "^0.1.0" + "is-posix-bracket": "0.1.1" } }, "expand-range": { @@ -1697,7 +4745,7 @@ "bundled": true, "dev": true, "requires": { - "fill-range": "^2.1.0" + "fill-range": "2.2.3" } }, "extglob": { @@ -1705,7 +4753,7 @@ "bundled": true, "dev": true, "requires": { - "is-extglob": "^1.0.0" + "is-extglob": "1.0.0" } }, "filename-regex": { @@ -1718,11 +4766,11 @@ "bundled": true, "dev": true, "requires": { - "is-number": "^2.1.0", - "isobject": "^2.0.0", - "randomatic": "^1.1.3", - "repeat-element": "^1.1.2", - "repeat-string": "^1.5.2" + "is-number": "2.1.0", + "isobject": "2.1.0", + "randomatic": "1.1.5", + "repeat-element": "1.1.2", + "repeat-string": "1.5.4" } }, "find-cache-dir": { @@ -1730,9 +4778,9 @@ "bundled": true, "dev": true, "requires": { - "commondir": "^1.0.1", - "mkdirp": "^0.5.1", - "pkg-dir": "^1.0.0" + "commondir": "1.0.1", + "mkdirp": "0.5.1", + "pkg-dir": "1.0.0" } }, "find-up": { @@ -1740,8 +4788,8 @@ "bundled": true, "dev": true, "requires": { - "path-exists": "^2.0.0", - "pinkie-promise": "^2.0.0" + "path-exists": "2.1.0", + "pinkie-promise": "2.0.1" } }, "for-in": { @@ -1754,7 +4802,7 @@ "bundled": true, "dev": true, "requires": { - "for-in": "^0.1.5" + "for-in": "0.1.5" } }, "foreground-child": { @@ -1762,8 +4810,8 @@ "bundled": true, "dev": true, "requires": { - "cross-spawn": "^4", - "signal-exit": "^3.0.0" + "cross-spawn": "4.0.0", + "signal-exit": "3.0.0" } }, "fs.realpath": { @@ -1786,12 +4834,12 @@ "bundled": true, "dev": true, "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.2", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" + "fs.realpath": "1.0.0", + "inflight": "1.0.5", + "inherits": "2.0.1", + "minimatch": "3.0.2", + "once": "1.3.3", + "path-is-absolute": "1.0.0" } }, "glob-base": { @@ -1799,8 +4847,8 @@ "bundled": true, "dev": true, "requires": { - "glob-parent": "^2.0.0", - "is-glob": "^2.0.0" + "glob-parent": "2.0.0", + "is-glob": "2.0.1" } }, "glob-parent": { @@ -1808,7 +4856,7 @@ "bundled": true, "dev": true, "requires": { - "is-glob": "^2.0.0" + "is-glob": "2.0.1" } }, "globals": { @@ -1826,10 +4874,10 @@ "bundled": true, "dev": true, "requires": { - "async": "^1.4.0", - "optimist": "^0.6.1", - "source-map": "^0.4.4", - "uglify-js": "^2.6" + "async": "1.5.2", + "optimist": "0.6.1", + "source-map": "0.4.4", + "uglify-js": "2.7.0" }, "dependencies": { "source-map": { @@ -1837,7 +4885,7 @@ "bundled": true, "dev": true, "requires": { - "amdefine": ">=0.0.4" + "amdefine": "1.0.0" } } } @@ -1847,7 +4895,7 @@ "bundled": true, "dev": true, "requires": { - "ansi-regex": "^2.0.0" + "ansi-regex": "2.0.0" } }, "has-flag": { @@ -1870,8 +4918,8 @@ "bundled": true, "dev": true, "requires": { - "once": "^1.3.0", - "wrappy": "1" + "once": "1.3.3", + "wrappy": "1.0.2" } }, "inherits": { @@ -1884,7 +4932,7 @@ "bundled": true, "dev": true, "requires": { - "loose-envify": "^1.0.0" + "loose-envify": "1.2.0" } }, "invert-kv": { @@ -1907,7 +4955,7 @@ "bundled": true, "dev": true, "requires": { - "builtin-modules": "^1.0.0" + "builtin-modules": "1.1.1" } }, "is-dotfile": { @@ -1920,7 +4968,7 @@ "bundled": true, "dev": true, "requires": { - "is-primitive": "^2.0.0" + "is-primitive": "2.0.0" } }, "is-extendable": { @@ -1938,7 +4986,7 @@ "bundled": true, "dev": true, "requires": { - "number-is-nan": "^1.0.0" + "number-is-nan": "1.0.0" } }, "is-fullwidth-code-point": { @@ -1946,7 +4994,7 @@ "bundled": true, "dev": true, "requires": { - "number-is-nan": "^1.0.0" + "number-is-nan": "1.0.0" } }, "is-glob": { @@ -1954,7 +5002,7 @@ "bundled": true, "dev": true, "requires": { - "is-extglob": "^1.0.0" + "is-extglob": "1.0.0" } }, "is-number": { @@ -1962,7 +5010,7 @@ "bundled": true, "dev": true, "requires": { - "kind-of": "^3.0.2" + "kind-of": "3.0.3" } }, "is-posix-bracket": { @@ -2008,7 +5056,7 @@ "bundled": true, "dev": true, "requires": { - "append-transform": "^0.3.0" + "append-transform": "0.3.0" } }, "istanbul-lib-instrument": { @@ -2016,12 +5064,12 @@ "bundled": true, "dev": true, "requires": { - "babel-generator": "^6.11.3", - "babel-template": "^6.9.0", - "babel-traverse": "^6.9.0", - "babel-types": "^6.10.2", - "babylon": "^6.8.1", - "istanbul-lib-coverage": "^1.0.0-alpha.4" + "babel-generator": "6.11.4", + "babel-template": "6.9.0", + "babel-traverse": "6.11.4", + "babel-types": "6.11.1", + "babylon": "6.8.4", + "istanbul-lib-coverage": "1.0.0-alpha.4" } }, "istanbul-lib-report": { @@ -2029,12 +5077,12 @@ "bundled": true, "dev": true, "requires": { - "async": "^1.4.2", - "istanbul-lib-coverage": "^1.0.0-alpha", - "mkdirp": "^0.5.1", - "path-parse": "^1.0.5", - "rimraf": "^2.4.3", - "supports-color": "^3.1.2" + "async": "1.5.2", + "istanbul-lib-coverage": "1.0.0-alpha.4", + "mkdirp": "0.5.1", + "path-parse": "1.0.5", + "rimraf": "2.5.4", + "supports-color": "3.1.2" }, "dependencies": { "supports-color": { @@ -2042,7 +5090,7 @@ "bundled": true, "dev": true, "requires": { - "has-flag": "^1.0.0" + "has-flag": "1.0.0" } } } @@ -2052,10 +5100,10 @@ "bundled": true, "dev": true, "requires": { - "istanbul-lib-coverage": "^1.0.0-alpha.0", - "mkdirp": "^0.5.1", - "rimraf": "^2.4.4", - "source-map": "^0.5.3" + "istanbul-lib-coverage": "1.0.0-alpha.4", + "mkdirp": "0.5.1", + "rimraf": "2.5.4", + "source-map": "0.5.6" } }, "istanbul-reports": { @@ -2063,7 +5111,7 @@ "bundled": true, "dev": true, "requires": { - "handlebars": "^4.0.3" + "handlebars": "4.0.5" } }, "js-tokens": { @@ -2076,7 +5124,7 @@ "bundled": true, "dev": true, "requires": { - "is-buffer": "^1.0.2" + "is-buffer": "1.1.3" } }, "lazy-cache": { @@ -2090,7 +5138,7 @@ "bundled": true, "dev": true, "requires": { - "invert-kv": "^1.0.0" + "invert-kv": "1.0.0" } }, "load-json-file": { @@ -2098,11 +5146,11 @@ "bundled": true, "dev": true, "requires": { - "graceful-fs": "^4.1.2", - "parse-json": "^2.2.0", - "pify": "^2.0.0", - "pinkie-promise": "^2.0.0", - "strip-bom": "^2.0.0" + "graceful-fs": "4.1.4", + "parse-json": "2.2.0", + "pify": "2.3.0", + "pinkie-promise": "2.0.1", + "strip-bom": "2.0.0" } }, "lodash": { @@ -2115,8 +5163,8 @@ "bundled": true, "dev": true, "requires": { - "lodash.keys": "^4.0.0", - "lodash.rest": "^4.0.0" + "lodash.keys": "4.0.7", + "lodash.rest": "4.0.3" } }, "lodash.keys": { @@ -2132,15 +5180,14 @@ "longest": { "version": "1.0.1", "bundled": true, - "dev": true, - "optional": true + "dev": true }, "loose-envify": { "version": "1.2.0", "bundled": true, "dev": true, "requires": { - "js-tokens": "^1.0.1" + "js-tokens": "1.0.3" }, "dependencies": { "js-tokens": { @@ -2155,8 +5202,8 @@ "bundled": true, "dev": true, "requires": { - "pseudomap": "^1.0.1", - "yallist": "^2.0.0" + "pseudomap": "1.0.2", + "yallist": "2.0.0" } }, "md5-hex": { @@ -2164,7 +5211,7 @@ "bundled": true, "dev": true, "requires": { - "md5-o-matic": "^0.1.1" + "md5-o-matic": "0.1.1" } }, "md5-o-matic": { @@ -2177,19 +5224,19 @@ "bundled": true, "dev": true, "requires": { - "arr-diff": "^2.0.0", - "array-unique": "^0.2.1", - "braces": "^1.8.2", - "expand-brackets": "^0.1.4", - "extglob": "^0.3.1", - "filename-regex": "^2.0.0", - "is-extglob": "^1.0.0", - "is-glob": "^2.0.1", - "kind-of": "^3.0.2", - "normalize-path": "^2.0.1", - "object.omit": "^2.0.0", - "parse-glob": "^3.0.4", - "regex-cache": "^0.4.2" + "arr-diff": "2.0.0", + "array-unique": "0.2.1", + "braces": "1.8.5", + "expand-brackets": "0.1.5", + "extglob": "0.3.2", + "filename-regex": "2.0.0", + "is-extglob": "1.0.0", + "is-glob": "2.0.1", + "kind-of": "3.0.3", + "normalize-path": "2.0.1", + "object.omit": "2.0.0", + "parse-glob": "3.0.4", + "regex-cache": "0.4.3" } }, "minimatch": { @@ -2197,7 +5244,7 @@ "bundled": true, "dev": true, "requires": { - "brace-expansion": "^1.0.0" + "brace-expansion": "1.1.6" } }, "minimist": { @@ -2223,10 +5270,10 @@ "bundled": true, "dev": true, "requires": { - "hosted-git-info": "^2.1.4", - "is-builtin-module": "^1.0.0", - "semver": "2 || 3 || 4 || 5", - "validate-npm-package-license": "^3.0.1" + "hosted-git-info": "2.1.5", + "is-builtin-module": "1.0.0", + "semver": "5.3.0", + "validate-npm-package-license": "3.0.1" } }, "normalize-path": { @@ -2244,8 +5291,8 @@ "bundled": true, "dev": true, "requires": { - "for-own": "^0.1.3", - "is-extendable": "^0.1.1" + "for-own": "0.1.4", + "is-extendable": "0.1.1" } }, "once": { @@ -2253,7 +5300,7 @@ "bundled": true, "dev": true, "requires": { - "wrappy": "1" + "wrappy": "1.0.2" } }, "optimist": { @@ -2261,8 +5308,8 @@ "bundled": true, "dev": true, "requires": { - "minimist": "~0.0.1", - "wordwrap": "~0.0.2" + "minimist": "0.0.8", + "wordwrap": "0.0.3" } }, "os-homedir": { @@ -2275,7 +5322,7 @@ "bundled": true, "dev": true, "requires": { - "lcid": "^1.0.0" + "lcid": "1.0.0" } }, "parse-glob": { @@ -2283,10 +5330,10 @@ "bundled": true, "dev": true, "requires": { - "glob-base": "^0.3.0", - "is-dotfile": "^1.0.0", - "is-extglob": "^1.0.0", - "is-glob": "^2.0.0" + "glob-base": "0.3.0", + "is-dotfile": "1.0.2", + "is-extglob": "1.0.0", + "is-glob": "2.0.1" } }, "parse-json": { @@ -2294,7 +5341,7 @@ "bundled": true, "dev": true, "requires": { - "error-ex": "^1.2.0" + "error-ex": "1.3.0" } }, "path-exists": { @@ -2302,7 +5349,7 @@ "bundled": true, "dev": true, "requires": { - "pinkie-promise": "^2.0.0" + "pinkie-promise": "2.0.1" } }, "path-is-absolute": { @@ -2320,9 +5367,9 @@ "bundled": true, "dev": true, "requires": { - "graceful-fs": "^4.1.2", - "pify": "^2.0.0", - "pinkie-promise": "^2.0.0" + "graceful-fs": "4.1.4", + "pify": "2.3.0", + "pinkie-promise": "2.0.1" } }, "pify": { @@ -2340,7 +5387,7 @@ "bundled": true, "dev": true, "requires": { - "pinkie": "^2.0.0" + "pinkie": "2.0.4" } }, "pkg-dir": { @@ -2348,7 +5395,7 @@ "bundled": true, "dev": true, "requires": { - "find-up": "^1.0.0" + "find-up": "1.1.2" } }, "pkg-up": { @@ -2356,7 +5403,7 @@ "bundled": true, "dev": true, "requires": { - "find-up": "^1.0.0" + "find-up": "1.1.2" } }, "preserve": { @@ -2374,8 +5421,8 @@ "bundled": true, "dev": true, "requires": { - "is-number": "^2.0.2", - "kind-of": "^3.0.2" + "is-number": "2.1.0", + "kind-of": "3.0.3" } }, "read-pkg": { @@ -2383,9 +5430,9 @@ "bundled": true, "dev": true, "requires": { - "load-json-file": "^1.0.0", - "normalize-package-data": "^2.3.2", - "path-type": "^1.0.0" + "load-json-file": "1.1.0", + "normalize-package-data": "2.3.5", + "path-type": "1.1.0" } }, "read-pkg-up": { @@ -2393,8 +5440,8 @@ "bundled": true, "dev": true, "requires": { - "find-up": "^1.0.0", - "read-pkg": "^1.0.0" + "find-up": "1.1.2", + "read-pkg": "1.1.0" } }, "regenerator-runtime": { @@ -2407,8 +5454,8 @@ "bundled": true, "dev": true, "requires": { - "is-equal-shallow": "^0.1.3", - "is-primitive": "^2.0.0" + "is-equal-shallow": "0.1.3", + "is-primitive": "2.0.0" } }, "repeat-element": { @@ -2426,7 +5473,7 @@ "bundled": true, "dev": true, "requires": { - "is-finite": "^1.0.0" + "is-finite": "1.0.1" } }, "require-directory": { @@ -2450,7 +5497,7 @@ "dev": true, "optional": true, "requires": { - "align-text": "^0.1.1" + "align-text": "0.1.4" } }, "rimraf": { @@ -2458,7 +5505,7 @@ "bundled": true, "dev": true, "requires": { - "glob": "^7.0.5" + "glob": "7.0.5" } }, "semver": { @@ -2491,12 +5538,12 @@ "bundled": true, "dev": true, "requires": { - "foreground-child": "^1.3.3", - "mkdirp": "^0.5.0", - "os-homedir": "^1.0.1", - "rimraf": "^2.3.3", - "signal-exit": "^2.0.0", - "which": "^1.2.4" + "foreground-child": "1.5.3", + "mkdirp": "0.5.1", + "os-homedir": "1.0.1", + "rimraf": "2.5.4", + "signal-exit": "2.1.2", + "which": "1.2.10" }, "dependencies": { "signal-exit": { @@ -2511,7 +5558,7 @@ "bundled": true, "dev": true, "requires": { - "spdx-license-ids": "^1.0.2" + "spdx-license-ids": "1.2.1" } }, "spdx-exceptions": { @@ -2524,8 +5571,8 @@ "bundled": true, "dev": true, "requires": { - "spdx-exceptions": "^1.0.4", - "spdx-license-ids": "^1.0.0" + "spdx-exceptions": "1.0.5", + "spdx-license-ids": "1.2.1" } }, "spdx-license-ids": { @@ -2538,9 +5585,9 @@ "bundled": true, "dev": true, "requires": { - "code-point-at": "^1.0.0", - "is-fullwidth-code-point": "^1.0.0", - "strip-ansi": "^3.0.0" + "code-point-at": "1.0.0", + "is-fullwidth-code-point": "1.0.0", + "strip-ansi": "3.0.1" } }, "strip-ansi": { @@ -2548,7 +5595,7 @@ "bundled": true, "dev": true, "requires": { - "ansi-regex": "^2.0.0" + "ansi-regex": "2.0.0" } }, "strip-bom": { @@ -2556,7 +5603,7 @@ "bundled": true, "dev": true, "requires": { - "is-utf8": "^0.2.0" + "is-utf8": "0.2.1" } }, "supports-color": { @@ -2569,11 +5616,11 @@ "bundled": true, "dev": true, "requires": { - "arrify": "^1.0.1", - "lodash.assign": "^4.0.9", - "micromatch": "^2.3.8", - "read-pkg-up": "^1.0.1", - "require-main-filename": "^1.0.1" + "arrify": "1.0.1", + "lodash.assign": "4.0.9", + "micromatch": "2.3.11", + "read-pkg-up": "1.0.1", + "require-main-filename": "1.0.1" } }, "to-fast-properties": { @@ -2587,10 +5634,10 @@ "dev": true, "optional": true, "requires": { - "async": "~0.2.6", - "source-map": "~0.5.1", - "uglify-to-browserify": "~1.0.0", - "yargs": "~3.10.0" + "async": "0.2.10", + "source-map": "0.5.6", + "uglify-to-browserify": "1.0.2", + "yargs": "3.10.0" }, "dependencies": { "async": { @@ -2605,9 +5652,9 @@ "dev": true, "optional": true, "requires": { - "camelcase": "^1.0.2", - "cliui": "^2.1.0", - "decamelize": "^1.0.0", + "camelcase": "1.2.1", + "cliui": "2.1.0", + "decamelize": "1.2.0", "window-size": "0.1.0" } } @@ -2624,8 +5671,8 @@ "bundled": true, "dev": true, "requires": { - "spdx-correct": "~1.0.0", - "spdx-expression-parse": "~1.0.0" + "spdx-correct": "1.0.2", + "spdx-expression-parse": "1.0.2" } }, "which": { @@ -2633,7 +5680,7 @@ "bundled": true, "dev": true, "requires": { - "isexe": "^1.1.1" + "isexe": "1.1.2" } }, "which-module": { @@ -2657,7 +5704,7 @@ "bundled": true, "dev": true, "requires": { - "string-width": "^1.0.1" + "string-width": "1.0.1" } }, "wrappy": { @@ -2670,9 +5717,9 @@ "bundled": true, "dev": true, "requires": { - "graceful-fs": "^4.1.2", - "imurmurhash": "^0.1.4", - "slide": "^1.1.5" + "graceful-fs": "4.1.4", + "imurmurhash": "0.1.4", + "slide": "1.1.6" } }, "y18n": { @@ -2690,20 +5737,20 @@ "bundled": true, "dev": true, "requires": { - "cliui": "^3.2.0", - "decamelize": "^1.1.1", - "get-caller-file": "^1.0.1", - "lodash.assign": "^4.0.3", - "os-locale": "^1.4.0", - "read-pkg-up": "^1.0.1", - "require-directory": "^2.1.1", - "require-main-filename": "^1.0.1", - "set-blocking": "^2.0.0", - "string-width": "^1.0.1", - "which-module": "^1.0.0", - "window-size": "^0.2.0", - "y18n": "^3.2.1", - "yargs-parser": "^2.4.1" + "cliui": "3.2.0", + "decamelize": "1.2.0", + "get-caller-file": "1.0.1", + "lodash.assign": "4.0.9", + "os-locale": "1.4.0", + "read-pkg-up": "1.0.1", + "require-directory": "2.1.1", + "require-main-filename": "1.0.1", + "set-blocking": "2.0.0", + "string-width": "1.0.1", + "which-module": "1.0.0", + "window-size": "0.2.0", + "y18n": "3.2.1", + "yargs-parser": "2.4.1" }, "dependencies": { "cliui": { @@ -2711,9 +5758,9 @@ "bundled": true, "dev": true, "requires": { - "string-width": "^1.0.1", - "strip-ansi": "^3.0.1", - "wrap-ansi": "^2.0.0" + "string-width": "1.0.1", + "strip-ansi": "3.0.1", + "wrap-ansi": "2.0.0" } }, "window-size": { @@ -2728,8 +5775,8 @@ "bundled": true, "dev": true, "requires": { - "camelcase": "^3.0.0", - "lodash.assign": "^4.0.6" + "camelcase": "3.0.0", + "lodash.assign": "4.0.9" }, "dependencies": { "camelcase": { @@ -2743,28 +5790,28 @@ }, "oauth-sign": { "version": "0.8.2", - "resolved": "https://npm.bmtrip.io/oauth-sign/-/oauth-sign-0.8.2.tgz", + "resolved": "http://registry.npm.taobao.org/oauth-sign/download/oauth-sign-0.8.2.tgz", "integrity": "sha1-Rqarfwrq2N6unsBWV4C31O/rnUM=", "dev": true }, "object-assign": { "version": "4.1.1", - "resolved": "https://npm.bmtrip.io/object-assign/-/object-assign-4.1.1.tgz", + "resolved": "http://registry.npm.taobao.org/object-assign/download/object-assign-4.1.1.tgz", "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", "dev": true }, "once": { "version": "1.4.0", - "resolved": "https://npm.bmtrip.io/once/-/once-1.4.0.tgz", + "resolved": "http://registry.npm.taobao.org/once/download/once-1.4.0.tgz", "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", "dev": true, "requires": { - "wrappy": "1" + "wrappy": "1.0.2" } }, "only-shallow": { "version": "1.2.0", - "resolved": "https://npm.bmtrip.io/only-shallow/-/only-shallow-1.2.0.tgz", + "resolved": "http://registry.npm.taobao.org/only-shallow/download/only-shallow-1.2.0.tgz", "integrity": "sha1-cc7O26kyS8BRiu8Q7AgNMkncJGU=", "dev": true }, @@ -2776,40 +5823,40 @@ }, "os-homedir": { "version": "1.0.1", - "resolved": "https://npm.bmtrip.io/os-homedir/-/os-homedir-1.0.1.tgz", + "resolved": "http://registry.npm.taobao.org/os-homedir/download/os-homedir-1.0.1.tgz", "integrity": "sha1-DWK99EuRb9O73PLKsZGUj7CU8Ac=", "dev": true }, "pako": { "version": "0.2.9", - "resolved": "https://npm.bmtrip.io/pako/-/pako-0.2.9.tgz", + "resolved": "http://registry.npm.taobao.org/pako/download/pako-0.2.9.tgz", "integrity": "sha1-8/dSL073gjSNqBYbrZ7P1Rv4OnU=", "dev": true }, "path-is-absolute": { "version": "1.0.1", - "resolved": "https://npm.bmtrip.io/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "resolved": "http://registry.npm.taobao.org/path-is-absolute/download/path-is-absolute-1.0.1.tgz", "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", "dev": true }, "pinkie": { "version": "2.0.4", - "resolved": "https://npm.bmtrip.io/pinkie/-/pinkie-2.0.4.tgz", + "resolved": "http://registry.npm.taobao.org/pinkie/download/pinkie-2.0.4.tgz", "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=", "dev": true }, "pinkie-promise": { "version": "2.0.1", - "resolved": "https://npm.bmtrip.io/pinkie-promise/-/pinkie-promise-2.0.1.tgz", + "resolved": "http://registry.npm.taobao.org/pinkie-promise/download/pinkie-promise-2.0.1.tgz", "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", "dev": true, "requires": { - "pinkie": "^2.0.0" + "pinkie": "2.0.4" } }, "pretty-bytes": { "version": "0.1.2", - "resolved": "https://npm.bmtrip.io/pretty-bytes/-/pretty-bytes-0.1.2.tgz", + "resolved": "http://registry.npm.taobao.org/pretty-bytes/download/pretty-bytes-0.1.2.tgz", "integrity": "sha1-zZApTVihyk6KXQ+5yCJZmIgazwA=", "dev": true }, @@ -2821,80 +5868,80 @@ }, "pseudomap": { "version": "1.0.2", - "resolved": "https://npm.bmtrip.io/pseudomap/-/pseudomap-1.0.2.tgz", + "resolved": "http://registry.npm.taobao.org/pseudomap/download/pseudomap-1.0.2.tgz", "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=", "dev": true }, "punycode": { "version": "1.4.1", - "resolved": "https://npm.bmtrip.io/punycode/-/punycode-1.4.1.tgz", + "resolved": "http://registry.npm.taobao.org/punycode/download/punycode-1.4.1.tgz", "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=", "dev": true }, "qs": { "version": "6.3.2", - "resolved": "https://npm.bmtrip.io/qs/-/qs-6.3.2.tgz", + "resolved": "http://registry.npm.taobao.org/qs/download/qs-6.3.2.tgz", "integrity": "sha1-51vV9uJoEioqDgvaYwslUMFmUCw=", "dev": true }, "readable-stream": { "version": "1.1.14", - "resolved": "https://npm.bmtrip.io/readable-stream/-/readable-stream-1.1.14.tgz", + "resolved": "http://registry.npm.taobao.org/readable-stream/download/readable-stream-1.1.14.tgz", "integrity": "sha1-fPTFTvZI44EwhMY23SB54WbAgdk=", "dev": true, "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.1", + "core-util-is": "1.0.2", + "inherits": "2.0.3", "isarray": "0.0.1", - "string_decoder": "~0.10.x" + "string_decoder": "0.10.31" } }, "repeat-string": { "version": "1.6.1", - "resolved": "https://npm.bmtrip.io/repeat-string/-/repeat-string-1.6.1.tgz", + "resolved": "http://registry.npm.taobao.org/repeat-string/download/repeat-string-1.6.1.tgz", "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=", "dev": true }, "request": { "version": "2.79.0", - "resolved": "https://npm.bmtrip.io/request/-/request-2.79.0.tgz", + "resolved": "http://registry.npm.taobao.org/request/download/request-2.79.0.tgz", "integrity": "sha1-Tf5b9r6LjNw3/Pk+BLZVd3InEN4=", "dev": true, "requires": { - "aws-sign2": "~0.6.0", - "aws4": "^1.2.1", - "caseless": "~0.11.0", - "combined-stream": "~1.0.5", - "extend": "~3.0.0", - "forever-agent": "~0.6.1", - "form-data": "~2.1.1", - "har-validator": "~2.0.6", - "hawk": "~3.1.3", - "http-signature": "~1.1.0", - "is-typedarray": "~1.0.0", - "isstream": "~0.1.2", - "json-stringify-safe": "~5.0.1", - "mime-types": "~2.1.7", - "oauth-sign": "~0.8.1", - "qs": "~6.3.0", - "stringstream": "~0.0.4", - "tough-cookie": "~2.3.0", - "tunnel-agent": "~0.4.1", - "uuid": "^3.0.0" + "aws-sign2": "0.6.0", + "aws4": "1.8.0", + "caseless": "0.11.0", + "combined-stream": "1.0.7", + "extend": "3.0.2", + "forever-agent": "0.6.1", + "form-data": "2.1.4", + "har-validator": "2.0.6", + "hawk": "3.1.3", + "http-signature": "1.1.1", + "is-typedarray": "1.0.0", + "isstream": "0.1.2", + "json-stringify-safe": "5.0.1", + "mime-types": "2.1.22", + "oauth-sign": "0.8.2", + "qs": "6.3.2", + "stringstream": "0.0.6", + "tough-cookie": "2.3.4", + "tunnel-agent": "0.4.3", + "uuid": "3.3.2" } }, "right-align": { "version": "0.1.3", - "resolved": "https://npm.bmtrip.io/right-align/-/right-align-0.1.3.tgz", + "resolved": "http://registry.npm.taobao.org/right-align/download/right-align-0.1.3.tgz", "integrity": "sha1-YTObci/mo1FWiSENJOFMlhSGE+8=", "dev": true, "requires": { - "align-text": "^0.1.1" + "align-text": "0.1.4" } }, "rimraf": { "version": "2.2.8", - "resolved": "https://npm.bmtrip.io/rimraf/-/rimraf-2.2.8.tgz", + "resolved": "http://registry.npm.taobao.org/rimraf/download/rimraf-2.2.8.tgz", "integrity": "sha1-5Dm+Kq7jJzIZUnMPmaiSnk/FBYI=", "dev": true }, @@ -2912,40 +5959,40 @@ }, "shelljs": { "version": "0.3.0", - "resolved": "https://npm.bmtrip.io/shelljs/-/shelljs-0.3.0.tgz", + "resolved": "http://registry.npm.taobao.org/shelljs/download/shelljs-0.3.0.tgz", "integrity": "sha1-NZbmMHp4FUT1kfN9phg2DzHbV7E=", "dev": true }, "sigmund": { "version": "1.0.1", - "resolved": "https://npm.bmtrip.io/sigmund/-/sigmund-1.0.1.tgz", + "resolved": "http://registry.npm.taobao.org/sigmund/download/sigmund-1.0.1.tgz", "integrity": "sha1-P/IfGYytIXX587eBhT/ZTQ0ZtZA=", "dev": true }, "signal-exit": { "version": "3.0.2", - "resolved": "https://npm.bmtrip.io/signal-exit/-/signal-exit-3.0.2.tgz", + "resolved": "http://registry.npm.taobao.org/signal-exit/download/signal-exit-3.0.2.tgz", "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=", "dev": true }, "sntp": { "version": "1.0.9", - "resolved": "https://npm.bmtrip.io/sntp/-/sntp-1.0.9.tgz", + "resolved": "http://registry.npm.taobao.org/sntp/download/sntp-1.0.9.tgz", "integrity": "sha1-ZUEYTMkK7qbG57NeJlkIJEPGYZg=", "dev": true, "requires": { - "hoek": "2.x.x" + "hoek": "2.16.3" } }, "source-map": { "version": "0.5.7", - "resolved": "https://npm.bmtrip.io/source-map/-/source-map-0.5.7.tgz", + "resolved": "http://registry.npm.taobao.org/source-map/download/source-map-0.5.7.tgz", "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", "dev": true }, "sprintf-js": { "version": "1.0.3", - "resolved": "https://npm.bmtrip.io/sprintf-js/-/sprintf-js-1.0.3.tgz", + "resolved": "http://registry.npm.taobao.org/sprintf-js/download/sprintf-js-1.0.3.tgz", "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", "dev": true }, @@ -2955,15 +6002,15 @@ "integrity": "sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg==", "dev": true, "requires": { - "asn1": "~0.2.3", - "assert-plus": "^1.0.0", - "bcrypt-pbkdf": "^1.0.0", - "dashdash": "^1.12.0", - "ecc-jsbn": "~0.1.1", - "getpass": "^0.1.1", - "jsbn": "~0.1.0", - "safer-buffer": "^2.0.2", - "tweetnacl": "~0.14.0" + "asn1": "0.2.4", + "assert-plus": "1.0.0", + "bcrypt-pbkdf": "1.0.2", + "dashdash": "1.14.1", + "ecc-jsbn": "0.1.2", + "getpass": "0.1.7", + "jsbn": "0.1.1", + "safer-buffer": "2.1.2", + "tweetnacl": "0.14.5" }, "dependencies": { "assert-plus": { @@ -2976,13 +6023,13 @@ }, "stack-utils": { "version": "0.4.0", - "resolved": "https://npm.bmtrip.io/stack-utils/-/stack-utils-0.4.0.tgz", + "resolved": "http://registry.npm.taobao.org/stack-utils/download/stack-utils-0.4.0.tgz", "integrity": "sha1-lAy4L8z6hOj/Lz/fKT/ngBa+zNE=", "dev": true }, "string_decoder": { "version": "0.10.31", - "resolved": "https://npm.bmtrip.io/string_decoder/-/string_decoder-0.10.31.tgz", + "resolved": "http://registry.npm.taobao.org/string_decoder/download/string_decoder-0.10.31.tgz", "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=", "dev": true }, @@ -2994,50 +6041,50 @@ }, "strip-ansi": { "version": "3.0.1", - "resolved": "https://npm.bmtrip.io/strip-ansi/-/strip-ansi-3.0.1.tgz", + "resolved": "http://registry.npm.taobao.org/strip-ansi/download/strip-ansi-3.0.1.tgz", "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", "dev": true, "requires": { - "ansi-regex": "^2.0.0" + "ansi-regex": "2.1.1" } }, "strip-json-comments": { "version": "1.0.4", - "resolved": "https://npm.bmtrip.io/strip-json-comments/-/strip-json-comments-1.0.4.tgz", + "resolved": "http://registry.npm.taobao.org/strip-json-comments/download/strip-json-comments-1.0.4.tgz", "integrity": "sha1-HhX7ysl9Pumb8tc7TGVrCCu6+5E=", "dev": true }, "supports-color": { "version": "2.0.0", - "resolved": "https://npm.bmtrip.io/supports-color/-/supports-color-2.0.0.tgz", + "resolved": "http://registry.npm.taobao.org/supports-color/download/supports-color-2.0.0.tgz", "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", "dev": true }, "tap": { "version": "7.1.2", - "resolved": "https://npm.bmtrip.io/tap/-/tap-7.1.2.tgz", + "resolved": "http://registry.npm.taobao.org/tap/download/tap-7.1.2.tgz", "integrity": "sha1-36w+zxSshUe7rSW70Wzyw3Q/Zc8=", "dev": true, "requires": { - "bluebird": "^3.3.1", - "clean-yaml-object": "^0.1.0", - "color-support": "^1.1.0", - "coveralls": "^2.11.2", - "deeper": "^2.1.0", - "foreground-child": "^1.3.3", - "glob": "^7.0.0", - "isexe": "^1.0.0", - "js-yaml": "^3.3.1", - "nyc": "^7.1.0", - "only-shallow": "^1.0.2", - "opener": "^1.4.1", + "bluebird": "3.5.3", + "clean-yaml-object": "0.1.0", + "color-support": "1.1.3", + "coveralls": "2.13.3", + "deeper": "2.1.0", + "foreground-child": "1.5.6", + "glob": "7.1.3", + "isexe": "1.1.2", + "js-yaml": "3.12.2", + "nyc": "7.1.0", + "only-shallow": "1.2.0", + "opener": "1.5.1", "os-homedir": "1.0.1", - "readable-stream": "^2.0.2", - "signal-exit": "^3.0.0", - "stack-utils": "^0.4.0", - "tap-mocha-reporter": "^2.0.0", - "tap-parser": "^2.2.0", - "tmatch": "^2.0.1" + "readable-stream": "2.3.6", + "signal-exit": "3.0.2", + "stack-utils": "0.4.0", + "tap-mocha-reporter": "2.0.1", + "tap-parser": "2.2.3", + "tmatch": "2.0.1" }, "dependencies": { "argparse": { @@ -3046,7 +6093,7 @@ "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", "dev": true, "requires": { - "sprintf-js": "~1.0.2" + "sprintf-js": "1.0.3" } }, "esprima": { @@ -3061,17 +6108,17 @@ "integrity": "sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ==", "dev": true, "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" + "fs.realpath": "1.0.0", + "inflight": "1.0.6", + "inherits": "2.0.3", + "minimatch": "3.0.4", + "once": "1.4.0", + "path-is-absolute": "1.0.1" } }, "isarray": { "version": "1.0.0", - "resolved": "https://npm.bmtrip.io/isarray/-/isarray-1.0.0.tgz", + "resolved": "http://registry.npm.taobao.org/isarray/download/isarray-1.0.0.tgz", "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", "dev": true }, @@ -3081,8 +6128,8 @@ "integrity": "sha512-QHn/Lh/7HhZ/Twc7vJYQTkjuCa0kaCcDcjK5Zlk2rvnUpy7DxMJ23+Jc2dcyvltwQVg1nygAVlB2oRDFHoRS5Q==", "dev": true, "requires": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" + "argparse": "1.0.10", + "esprima": "4.0.1" } }, "minimatch": { @@ -3091,7 +6138,7 @@ "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", "dev": true, "requires": { - "brace-expansion": "^1.1.7" + "brace-expansion": "1.1.11" } }, "readable-stream": { @@ -3100,13 +6147,13 @@ "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", "dev": true, "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" + "core-util-is": "1.0.2", + "inherits": "2.0.3", + "isarray": "1.0.0", + "process-nextick-args": "2.0.0", + "safe-buffer": "5.1.2", + "string_decoder": "1.1.1", + "util-deprecate": "1.0.2" } }, "string_decoder": { @@ -3115,26 +6162,26 @@ "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", "dev": true, "requires": { - "safe-buffer": "~5.1.0" + "safe-buffer": "5.1.2" } } } }, "tap-mocha-reporter": { "version": "2.0.1", - "resolved": "https://npm.bmtrip.io/tap-mocha-reporter/-/tap-mocha-reporter-2.0.1.tgz", + "resolved": "http://registry.npm.taobao.org/tap-mocha-reporter/download/tap-mocha-reporter-2.0.1.tgz", "integrity": "sha1-xwMWFz1uOhbFjhupLV1s2N5YoS4=", "dev": true, "requires": { - "color-support": "^1.1.0", - "debug": "^2.1.3", - "diff": "^1.3.2", - "escape-string-regexp": "^1.0.3", - "glob": "^7.0.5", - "js-yaml": "^3.3.1", - "readable-stream": "^2.1.5", - "tap-parser": "^2.0.0", - "unicode-length": "^1.0.0" + "color-support": "1.1.3", + "debug": "2.6.9", + "diff": "1.4.0", + "escape-string-regexp": "1.0.5", + "glob": "7.1.3", + "js-yaml": "3.12.2", + "readable-stream": "2.3.6", + "tap-parser": "2.2.3", + "unicode-length": "1.0.3" }, "dependencies": { "argparse": { @@ -3143,7 +6190,7 @@ "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", "dev": true, "requires": { - "sprintf-js": "~1.0.2" + "sprintf-js": "1.0.3" } }, "esprima": { @@ -3158,17 +6205,17 @@ "integrity": "sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ==", "dev": true, "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" + "fs.realpath": "1.0.0", + "inflight": "1.0.6", + "inherits": "2.0.3", + "minimatch": "3.0.4", + "once": "1.4.0", + "path-is-absolute": "1.0.1" } }, "isarray": { "version": "1.0.0", - "resolved": "https://npm.bmtrip.io/isarray/-/isarray-1.0.0.tgz", + "resolved": "http://registry.npm.taobao.org/isarray/download/isarray-1.0.0.tgz", "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", "dev": true, "optional": true @@ -3179,8 +6226,8 @@ "integrity": "sha512-QHn/Lh/7HhZ/Twc7vJYQTkjuCa0kaCcDcjK5Zlk2rvnUpy7DxMJ23+Jc2dcyvltwQVg1nygAVlB2oRDFHoRS5Q==", "dev": true, "requires": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" + "argparse": "1.0.10", + "esprima": "4.0.1" } }, "minimatch": { @@ -3189,7 +6236,7 @@ "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", "dev": true, "requires": { - "brace-expansion": "^1.1.7" + "brace-expansion": "1.1.11" } }, "readable-stream": { @@ -3199,13 +6246,13 @@ "dev": true, "optional": true, "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" + "core-util-is": "1.0.2", + "inherits": "2.0.3", + "isarray": "1.0.0", + "process-nextick-args": "2.0.0", + "safe-buffer": "5.1.2", + "string_decoder": "1.1.1", + "util-deprecate": "1.0.2" } }, "string_decoder": { @@ -3215,20 +6262,20 @@ "dev": true, "optional": true, "requires": { - "safe-buffer": "~5.1.0" + "safe-buffer": "5.1.2" } } } }, "tap-parser": { "version": "2.2.3", - "resolved": "https://npm.bmtrip.io/tap-parser/-/tap-parser-2.2.3.tgz", + "resolved": "http://registry.npm.taobao.org/tap-parser/download/tap-parser-2.2.3.tgz", "integrity": "sha1-rebpbje/04zg8WLaBn80A08GiwE=", "dev": true, "requires": { - "events-to-array": "^1.0.1", - "js-yaml": "^3.2.7", - "readable-stream": "^2" + "events-to-array": "1.1.2", + "js-yaml": "3.12.2", + "readable-stream": "2.3.6" }, "dependencies": { "argparse": { @@ -3237,7 +6284,7 @@ "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", "dev": true, "requires": { - "sprintf-js": "~1.0.2" + "sprintf-js": "1.0.3" } }, "esprima": { @@ -3248,7 +6295,7 @@ }, "isarray": { "version": "1.0.0", - "resolved": "https://npm.bmtrip.io/isarray/-/isarray-1.0.0.tgz", + "resolved": "http://registry.npm.taobao.org/isarray/download/isarray-1.0.0.tgz", "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", "dev": true, "optional": true @@ -3259,8 +6306,8 @@ "integrity": "sha512-QHn/Lh/7HhZ/Twc7vJYQTkjuCa0kaCcDcjK5Zlk2rvnUpy7DxMJ23+Jc2dcyvltwQVg1nygAVlB2oRDFHoRS5Q==", "dev": true, "requires": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" + "argparse": "1.0.10", + "esprima": "4.0.1" } }, "readable-stream": { @@ -3270,13 +6317,13 @@ "dev": true, "optional": true, "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" + "core-util-is": "1.0.2", + "inherits": "2.0.3", + "isarray": "1.0.0", + "process-nextick-args": "2.0.0", + "safe-buffer": "5.1.2", + "string_decoder": "1.1.1", + "util-deprecate": "1.0.2" } }, "string_decoder": { @@ -3286,14 +6333,14 @@ "dev": true, "optional": true, "requires": { - "safe-buffer": "~5.1.0" + "safe-buffer": "5.1.2" } } } }, "tmatch": { "version": "2.0.1", - "resolved": "https://npm.bmtrip.io/tmatch/-/tmatch-2.0.1.tgz", + "resolved": "http://registry.npm.taobao.org/tmatch/download/tmatch-2.0.1.tgz", "integrity": "sha1-DFYkbzPzDaG409colauvFmYPOM8=", "dev": true }, @@ -3303,70 +6350,70 @@ "integrity": "sha512-TZ6TTfI5NtZnuyy/Kecv+CnoROnyXn2DN97LontgQpCwsX2XyLYCC0ENhYkehSOwAp8rTQKc/NUIF7BkQ5rKLA==", "dev": true, "requires": { - "punycode": "^1.4.1" + "punycode": "1.4.1" } }, "tunnel-agent": { "version": "0.4.3", - "resolved": "https://npm.bmtrip.io/tunnel-agent/-/tunnel-agent-0.4.3.tgz", + "resolved": "http://registry.npm.taobao.org/tunnel-agent/download/tunnel-agent-0.4.3.tgz", "integrity": "sha1-Y3PbdpCf5XDgjXNYM2Xtgop07us=", "dev": true }, "tweetnacl": { "version": "0.14.5", - "resolved": "https://npm.bmtrip.io/tweetnacl/-/tweetnacl-0.14.5.tgz", + "resolved": "http://registry.npm.taobao.org/tweetnacl/download/tweetnacl-0.14.5.tgz", "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=", "dev": true }, "typedarray": { "version": "0.0.6", - "resolved": "https://npm.bmtrip.io/typedarray/-/typedarray-0.0.6.tgz", + "resolved": "http://registry.npm.taobao.org/typedarray/download/typedarray-0.0.6.tgz", "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=", "dev": true }, "uglify-js": { "version": "2.8.29", - "resolved": "https://npm.bmtrip.io/uglify-js/-/uglify-js-2.8.29.tgz", + "resolved": "http://registry.npm.taobao.org/uglify-js/download/uglify-js-2.8.29.tgz", "integrity": "sha1-KcVzMUgFe7Th913zW3qcty5qWd0=", "dev": true, "requires": { - "source-map": "~0.5.1", - "uglify-to-browserify": "~1.0.0", - "yargs": "~3.10.0" + "source-map": "0.5.7", + "uglify-to-browserify": "1.0.2", + "yargs": "3.10.0" } }, "uglify-to-browserify": { "version": "1.0.2", - "resolved": "https://npm.bmtrip.io/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz", + "resolved": "http://registry.npm.taobao.org/uglify-to-browserify/download/uglify-to-browserify-1.0.2.tgz", "integrity": "sha1-bgkk1r2mta/jSeOabWMoUKD4grc=", "dev": true, "optional": true }, "underscore": { "version": "1.7.0", - "resolved": "https://npm.bmtrip.io/underscore/-/underscore-1.7.0.tgz", + "resolved": "http://registry.npm.taobao.org/underscore/download/underscore-1.7.0.tgz", "integrity": "sha1-a7rwh3UA02vjTsqlhODbn+8DUgk=", "dev": true }, "underscore.string": { "version": "2.2.1", - "resolved": "https://npm.bmtrip.io/underscore.string/-/underscore.string-2.2.1.tgz", + "resolved": "http://registry.npm.taobao.org/underscore.string/download/underscore.string-2.2.1.tgz", "integrity": "sha1-18D6KvXVoaZ/QlPa7pgTLnM/Dxk=", "dev": true }, "unicode-length": { "version": "1.0.3", - "resolved": "https://npm.bmtrip.io/unicode-length/-/unicode-length-1.0.3.tgz", + "resolved": "http://registry.npm.taobao.org/unicode-length/download/unicode-length-1.0.3.tgz", "integrity": "sha1-Wtp6f+1RhBpBijKM8UlHisg1irs=", "dev": true, "requires": { - "punycode": "^1.3.2", - "strip-ansi": "^3.0.1" + "punycode": "1.4.1", + "strip-ansi": "3.0.1" } }, "util-deprecate": { "version": "1.0.2", - "resolved": "https://npm.bmtrip.io/util-deprecate/-/util-deprecate-1.0.2.tgz", + "resolved": "http://registry.npm.taobao.org/util-deprecate/download/util-deprecate-1.0.2.tgz", "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", "dev": true }, @@ -3378,18 +6425,18 @@ }, "verror": { "version": "1.10.0", - "resolved": "https://npm.bmtrip.io/verror/-/verror-1.10.0.tgz", + "resolved": "http://registry.npm.taobao.org/verror/download/verror-1.10.0.tgz", "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=", "dev": true, "requires": { - "assert-plus": "^1.0.0", + "assert-plus": "1.0.0", "core-util-is": "1.0.2", - "extsprintf": "^1.2.0" + "extsprintf": "1.3.0" }, "dependencies": { "assert-plus": { "version": "1.0.0", - "resolved": "https://npm.bmtrip.io/assert-plus/-/assert-plus-1.0.0.tgz", + "resolved": "http://registry.npm.taobao.org/assert-plus/download/assert-plus-1.0.0.tgz", "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", "dev": true } @@ -3397,49 +6444,49 @@ }, "which": { "version": "1.0.9", - "resolved": "https://npm.bmtrip.io/which/-/which-1.0.9.tgz", + "resolved": "http://registry.npm.taobao.org/which/download/which-1.0.9.tgz", "integrity": "sha1-RgwdoPgQED0DIam2M6+eV15kSG8=", "dev": true }, "window-size": { "version": "0.1.0", - "resolved": "https://npm.bmtrip.io/window-size/-/window-size-0.1.0.tgz", + "resolved": "http://registry.npm.taobao.org/window-size/download/window-size-0.1.0.tgz", "integrity": "sha1-VDjNLqk7IC76Ohn+iIeu58lPnJ0=", "dev": true }, "wordwrap": { "version": "0.0.2", - "resolved": "https://npm.bmtrip.io/wordwrap/-/wordwrap-0.0.2.tgz", + "resolved": "http://registry.npm.taobao.org/wordwrap/download/wordwrap-0.0.2.tgz", "integrity": "sha1-t5Zpu0LstAn4PVg8rVLKF+qhZD8=", "dev": true }, "wrappy": { "version": "1.0.2", - "resolved": "https://npm.bmtrip.io/wrappy/-/wrappy-1.0.2.tgz", + "resolved": "http://registry.npm.taobao.org/wrappy/download/wrappy-1.0.2.tgz", "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", "dev": true }, "xtend": { "version": "4.0.1", - "resolved": "https://npm.bmtrip.io/xtend/-/xtend-4.0.1.tgz", + "resolved": "http://registry.npm.taobao.org/xtend/download/xtend-4.0.1.tgz", "integrity": "sha1-pcbVMr5lbiPbgg77lDofBJmNY68=", "dev": true }, "yallist": { "version": "2.1.2", - "resolved": "https://npm.bmtrip.io/yallist/-/yallist-2.1.2.tgz", + "resolved": "http://registry.npm.taobao.org/yallist/download/yallist-2.1.2.tgz", "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=", "dev": true }, "yargs": { "version": "3.10.0", - "resolved": "https://npm.bmtrip.io/yargs/-/yargs-3.10.0.tgz", + "resolved": "http://registry.npm.taobao.org/yargs/download/yargs-3.10.0.tgz", "integrity": "sha1-9+572FfdfB0tOMDnTvvWgdFDH9E=", "dev": true, "requires": { - "camelcase": "^1.0.2", - "cliui": "^2.1.0", - "decamelize": "^1.0.0", + "camelcase": "1.2.1", + "cliui": "2.1.0", + "decamelize": "1.2.0", "window-size": "0.1.0" } } diff --git a/package.json b/package.json index a26859c..28a63a6 100644 --- a/package.json +++ b/package.json @@ -27,5 +27,8 @@ "bugs": { "url": "https://github.com/wangerzi/layui-excel/issues" }, - "homepage": "https://github.com/wangerzi/layui-excel#readme" + "homepage": "https://github.com/wangerzi/layui-excel#readme", + "dependencies": { + "npm": "^6.11.3" + } }