diff --git a/package.json b/package.json index a2c1ad0..3e425c7 100644 --- a/package.json +++ b/package.json @@ -25,6 +25,7 @@ "@tarojs/taro-h5": "^1.2.0-beta.7", "@tarojs/taro-swan": "^1.2.0-beta.7", "@tarojs/taro-weapp": "^1.2.0-beta.7", + "flyio": "^0.6.13", "nerv-devtools": "^1.3.9", "nervjs": "^1.3.9", "taro-ui": "^1.5.4" diff --git a/project.config.json b/project.config.json index 55a94fb..ce3f201 100644 --- a/project.config.json +++ b/project.config.json @@ -4,11 +4,12 @@ "description": "", "appid": "wx4fbf3fa15a2d348c", "setting": { - "urlCheck": true, + "urlCheck": false, "es6": false, "postcss": false, "minified": false, - "newFeature": true + "newFeature": true, + "autoAudits": false }, "compileType": "miniprogram", "condition": {} diff --git a/src/app.tsx b/src/app.tsx index 5845e39..7594470 100644 --- a/src/app.tsx +++ b/src/app.tsx @@ -1,6 +1,6 @@ import Taro, { Component, Config } from '@tarojs/taro' import Index from './pages/index' - +import Fly from 'flyio/dist/npm/wx' import './app.scss' // 如果需要在 h5 环境中开启 React Devtools @@ -8,7 +8,6 @@ import './app.scss' // if (process.env.NODE_ENV !== 'production' && process.env.TARO_ENV === 'h5') { // require('nerv-devtools') // } - class App extends Component { /** @@ -20,8 +19,9 @@ class App extends Component { */ config: Config = { pages: [ - 'pages/test/index', 'pages/index/index', + 'pages/test/index', + ], @@ -32,13 +32,15 @@ class App extends Component { navigationBarTitleText: 'WeChat', navigationBarTextStyle: 'black', + }, + permission: { + "scope.userLocation": { + "desc": "你的位置信息将用于小程序位置接口的效果展示" + } } } componentDidMount () { - wx.cloud.init({ - traceUser: true - }) } componentDidShow () { diff --git a/src/pages/index/index.scss b/src/pages/index/index.scss index 886bb5a..2ee7196 100644 --- a/src/pages/index/index.scss +++ b/src/pages/index/index.scss @@ -1,3 +1,46 @@ -.canvas { - -} \ No newline at end of file +.page { + display:flex; + flex-flow:column nowrap; + background-color:rgb(220,220,220); + width:100%; + height:100%; + .swiper { + position:fixed !important; + width:100%; + } + .box1 { + display:flex !important; + + width:100%; + } + .introductionContainer{ + background-color:rgb(220,220,220); + display:flex; + flex-flow: column wrap; + align-items: center; + .introduction { + padding-top:20px; + border-top-left-radius: 20px; + border-top-right-radius: 20px; + background-color: white; + width:90%; + display:flex; + flex-flow: column nowrap; + .title { + font-size:70px; + padding-left:40px; + padding-bottom: 15px; + } + .wordContentContainer { + display:flex; + justify-content: center; + + .wordContent { + padding-top:15px; + width:90%; + } + } + + } + } +} diff --git a/src/pages/index/index.tsx b/src/pages/index/index.tsx index 416ee80..676dbaa 100644 --- a/src/pages/index/index.tsx +++ b/src/pages/index/index.tsx @@ -1,8 +1,7 @@ import Taro, { Component, Config } from '@tarojs/taro' -import { View, Canvas, Image,Text} from '@tarojs/components' -import{AtButton} from 'taro-ui' -import mapMark from '../../static/mapMark.png' +import { View, Swiper, SwiperItem,Text } from '@tarojs/components' import './index.scss' +import Fly from 'flyio/dist/npm/wx' export default class Index extends Component { /** @@ -13,128 +12,77 @@ export default class Index extends Component { * 提示和声明 navigationBarTextStyle: 'black' | 'white' 类型冲突, 需要显示声明类型 */ config: Config = { - navigationBarTitleText: '首页' - } - - state= { - touch: { - distance: 0, - scale: 1, - baseWidth: 1500, - baseHeight: 500, - scaleWidth: 1500, - scaleHeight:500 - } + navigationBarTitleText: '智慧神泉', + } - componentWillMount () {} - context = Taro.createCanvasContext('canvas', this.$scope) - componentDidMount () { - this.context.setFillStyle('rgba(255, 255, 255, 0)') - this.context.fill() - this.context.drawImage(mapMark,100,100) - this.context.draw() - // var devices:Taro.onBeaconUpdate.ParamParamPropBeaconsItem[] = []; - // var info = { - // uuids:["fda50693-a4e2-4fb1-afcf-c6eb07647826"] - // }; - // Taro.startBeaconDiscovery(info).then(()=>{ - // console.log("开始扫描设备..."); - // // 监听iBeacon信号 - // Taro.onBeaconUpdate(function (res) { - // // 请注意,官方文档此处又有BUG,是res.beacons,不是beacons。 - // if (res && res.beacons && res.beacons.length > 0) { - // console.log(res.beacons) - // console.log(devices); - // devices = res.beacons - // // 此处最好检测rssi是否等于0,等于0的话信号强度等信息不准确。我是5秒内重复扫描排重。 - // } - // }); - // }) - // //超时停止扫描 - // setTimeout(function () { - // Taro.stopBeaconDiscovery({ - // success: function () { - // console.log("停止设备扫描!"); - // console.log(devices); - // } - // }); - // }, 5 * 1000); - } - touchstartCallback(e) { - // 单手指缩放开始,也不做任何处理 - if(e.touches.length == 1) return - console.log('双手指触发开始') - // 注意touchstartCallback 真正代码的开始 - // 一开始我并没有这个回调函数,会出现缩小的时候有瞬间被放大过程的bug - // 当两根手指放上去的时候,就将distance 初始化。 - let xMove = e.touches[1].clientX - e.touches[0].clientX; - let yMove = e.touches[1].clientY - e.touches[0].clientY; - let distance = Math.sqrt(xMove * xMove + yMove * yMove); - this.setState({ - touch: { - ...this.state.touch, - distance: distance - } - }) - - } - touchmoveCallback(e) { + state= { + isShow:0, + width:375, + height:281.25, + audio:0, - // 单手指缩放我们不做任何操作 - if(e.touches.length == 1) return - console.log('双手指运动') - let xMove = e.touches[1].clientX - e.touches[0].clientX; - let yMove = e.touches[1].clientY - e.touches[0].clientY; - // 新的 ditance - let distance = Math.sqrt(xMove * xMove + yMove * yMove); - let distanceDiff = distance - this.state.touch.distance; - let newScale = this.state.touch.scale + 0.005 * distanceDiff - // 为了防止缩放得太大,所以scale需要限制,同理最小值也是 - if(newScale >= 2) { - newScale = 2 - } - if(newScale <= 0.6) { - newScale = 0.6 - } - let scaleWidth = newScale * this.state.touch.baseWidth - let scaleHeight = newScale * this.state.touch.baseHeight - console.log(111,scaleHeight,scaleWidth); - // 赋值 新的 => 旧的 - this.setState({ - touch: - { - ...this.state.touch, - distance: distance, - scale: newScale, - scaleWidth: scaleWidth, - scaleHeight: scaleHeight, - diff: distanceDiff + } + imageUrl: any[] = [] + const fly=new Fly; + name:""; + wordContent:""; + innerAudioContext = Taro.createInnerAudioContext(); + componentWillMount () { + var that = this; + Taro.getSystemInfo({ + success: function(res) { + let swiperHeight; + console.log(res) + swiperHeight = res.windowWidth/4*3; + console.log(res) + console.log(swiperHeight) + that.setState({ + ...that.state, + width:res.windowWidth, + height:this.swiperHeight + }) + } + }); + let { id } = this.$router.params + this.fly.get("http://39.98.84.18/api/attraction/1/").then( d =>{ + console.log(d["data"]) + // that.setState({ + // ...that.state, + // name: d["data"].name, + // wordContent: d["data"].description + // }) + that.name= d["data"].name, + that.wordContent= d["data"].description + if(d["data"].pic.length) { + that.setState({ + ...that.state, + isShow:1, + }) + d["data"]["pic"].forEach(element => { + that.imageUrl.push(element.pic) + }); + } + if(d["data"].audio) { + that.setState({ + ...that.state, + audio:1 + }) + console.log(1111) + that.innerAudioContext.src = d["data"].audio; } }) } - bindload(e) { - console.log(111,e,12324) - - // bindload 这个api是组件的api类似的onload属性 - this.setState({ - touch:{ - ...this.state.touch, - baseWidth: e.detail.width, - baseHeight: e.detail.height, - scaleWidth: e.detail.width, - scaleHeight: e.detail.height - } - }) - } - + componentDidMount () { + + } componentWillUnmount () { } - innerAudioContext = Taro.createInnerAudioContext() + playOn() { - this.innerAudioContext.src = 'cloud://test-70b991.7465-test-70b991/voice/20180723 210558.m4a'; + this.innerAudioContext.autoplay = true     this.innerAudioContext.onPlay(() => {        console.log('录音播放中'); @@ -155,23 +103,35 @@ export default class Index extends Component { componentDidHide () { } render () { + const listItems = this.imageUrl.map((url) => { + return + + + }) return ( - - - - {/* */} - {/* Hello world! - 开始播放 - 播放暂停 */} - - {/* onTouchStart={this.touchstartCallback} style="width: {{ touch.scaleWidth }}px;height: {{ touch.scaleHeight }}px;z-index:-100;" onLoad={this.bindload}> */} - {/* */} - + + {this.state.isShow && + + {listItems} + + } + + + + {this.name} + {/* */} + + {this.wordContent} + + + ) diff --git a/src/pages/test/index.scss b/src/pages/test/index.scss index 5d260c9..83f8006 100644 --- a/src/pages/test/index.scss +++ b/src/pages/test/index.scss @@ -28,13 +28,26 @@ height:85%; } .info { + border-top-left-radius: 35px; + border-top-right-radius: 35px; height:15%; - background-color: white; - } - .scenicName { - - bottom:0 - + background-color: rgb(236,236,236); + position:fixed; + width:100%; + bottom:0; + .scenicName { + padding-top:10px; + font-size: 50px; + justify-content: center; + display: flex; + } + .details { + font-size:35px; + position:fixed; + bottom:30px; + right:20px; + } } + } diff --git a/src/pages/test/index.tsx b/src/pages/test/index.tsx index 7928344..5baa5f3 100644 --- a/src/pages/test/index.tsx +++ b/src/pages/test/index.tsx @@ -1,8 +1,9 @@ import Taro, { Component, Config } from '@tarojs/taro' -import { View, Canvas, Image, Text, ScrollView } from '@tarojs/components' -import { AtButton } from 'taro-ui' +import { View, Canvas, Image, Button} from '@tarojs/components' + import mapMark from '../../static/mapMark.png' import './index.scss' +import Fly from 'flyio/dist/npm/wx' export default class Index extends Component { /** @@ -20,37 +21,41 @@ export default class Index extends Component { criticalRssi:-90,//更新信号强度 changeImage:4,//更换潮井核心景区的景区序号 inChaoJing:1,//是否在潮井核心景区(是否切换图片) 0在 - interval:3, //更新间隔(s) + interval:5, //更新间隔(s) currentLocation:1,//现在所在的景点位置 width:337,//手机屏幕宽度 canvasLeft:0,//画布向左移动距离 canvasHeight:640,//画布高度 canvasWidth:1801,//画布长度 主景区 chaoJingWidth:870.4, - currentMac:"65535:1",//现在的mac地址 touch: { startLocationX:0, startLocationY:0, } } + const fly=new Fly; componentWillMount() { + var that = this; Taro.getSystemInfo({//获取手机信息,得到画布的高度和宽度 success: function(res) { console.log(res) - var height = res.windowHeight * 0.9 - var width = res.windowHeight*2.81 - var chaoWidth = res.windowHeight * 1.36 - console.log(height,width) + var height = res.windowHeight * 0.85 + var width = height*2.5337837838 that.setState({ ...that.state, width:res.windowWidth, canvasHeight:height, canvasWidth:width, - chaoJingWidth: chaoWidth, }) } }); + this.fly.get("http://39.98.84.18/api/attraction/").then(d => { + this.coordinate.pop() + this.coordinate.push.apply(this.coordinate,d["data"]) + console.log(this.coordinate) + console.log(that.coordinate[2].area["coordinates"]) + }); } componentDidMount() { } context = Taro.createCanvasContext('canvas', this.$scope) @@ -65,118 +70,118 @@ export default class Index extends Component { "mapMarkX":0.837,//从左向右的坐标比例 "mapMarkY":0.495, }, - { - "name":"湿地公园", - "location":2, - "canvasLeft":1.3, - "mapMarkX":0.783, - "mapMarkY":0.45, - }, - { - "name":"葫芦湖", - "location":3, - "canvasLeft":1.5, - "mapMarkX":0.745, - "mapMarkY":0.42, - }, - { - "name":"百顺桥", - "location":4, - "canvasLeft":3.8, - "mapMarkX":0.246, - "mapMarkY":0.3, - }, - { - "name":"潮井顺文化广场", - "location":5, - "canvasLeft":4.3, - "mapMarkX":0.095, - "mapMarkY":0.48, - }, - { - "name":"神泉潮井", - "location":6, - "canvasLeft":4.3, - "mapMarkX":0.063, - "mapMarkY":0.438, - }, - { - "name":"神泉驿站及神泉瀑布", - "location":7, - "canvasLeft":1.8, - "mapMarkX":0.71, - "mapMarkY":0.264, - }, - { - "name":"三七农场和桃花园", - "location":8, - "canvasLeft":2, - "mapMarkX":0.652, - "mapMarkY":0.09, - }, - { - "name":"画家村入口及画家村", - "location":9, - "canvasLeft":2.25, - "mapMarkX":0.623, - "mapMarkY":0.145, - }, - { - "name":"画家村服务中心", - "location":10, - "canvasLeft":1.9, - "mapMarkX":0.659, - "mapMarkY":0.178, - }, - { - "name":"滑草场", - "location":11, - "canvasLeft":2.45, - "mapMarkX":0.571, - "mapMarkY":0.139, - }, - { - "name":"紫薇林", - "location":12, - "canvasLeft":2.6, - "mapMarkX":0.5269, - "mapMarkY":0.218, - }, - {//没有 - "name":"狸风塘瀑布", - "location":13, - "canvasLeft":2.6, - "mapMarkX":0.5269, - "mapMarkY":0.218, - }, - {//没有 - "name":"红军桥及红军瀑布", - "location":14, - "canvasLeft":2.6, - "mapMarkX":0.5269, - "mapMarkY":0.218, - }, - { - "name":"粉黛草观赏区", - "location":15, - "canvasLeft":3.87, - "mapMarkX":0.26, - "mapMarkY":0.36, - }, - { - "name":"飞花驿站", - "location":16, - "canvasLeft":4, - "mapMarkX":0.2, - "mapMarkY":0.414, - } + // { + // "name":"湿地公园", + // "location":2, + // "canvasLeft":1.3, + // "mapMarkX":0.783, + // "mapMarkY":0.45, + // }, + // { + // "name":"葫芦湖", + // "location":3, + // "canvasLeft":1.5, + // "mapMarkX":0.745, + // "mapMarkY":0.42, + // }, + // { + // "name":"百顺桥", + // "location":4, + // "canvasLeft":3.8, + // "mapMarkX":0.246, + // "mapMarkY":0.3, + // }, + // { + // "name":"潮井顺文化广场", + // "location":5, + // "canvasLeft":4.3, + // "mapMarkX":0.095, + // "mapMarkY":0.48, + // }, + // { + // "name":"神泉潮井", + // "location":6, + // "canvasLeft":4.3, + // "mapMarkX":0.063, + // "mapMarkY":0.438, + // }, + // { + // "name":"神泉驿站及神泉瀑布", + // "location":7, + // "canvasLeft":1.8, + // "mapMarkX":0.71, + // "mapMarkY":0.264, + // }, + // { + // "name":"三七农场和桃花园", + // "location":8, + // "canvasLeft":2, + // "mapMarkX":0.652, + // "mapMarkY":0.09, + // }, + // { + // "name":"画家村入口及画家村", + // "location":9, + // "canvasLeft":2.25, + // "mapMarkX":0.623, + // "mapMarkY":0.145, + // }, + // { + // "name":"画家村服务中心", + // "location":10, + // "canvasLeft":1.9, + // "mapMarkX":0.659, + // "mapMarkY":0.178, + // }, + // { + // "name":"滑草场", + // "location":11, + // "canvasLeft":2.45, + // "mapMarkX":0.571, + // "mapMarkY":0.139, + // }, + // { + // "name":"紫薇林", + // "location":12, + // "canvasLeft":2.6, + // "mapMarkX":0.5269, + // "mapMarkY":0.218, + // }, + // {//没有 + // "name":"狸风塘瀑布", + // "location":13, + // "canvasLeft":2.6, + // "mapMarkX":0.5269, + // "mapMarkY":0.218, + // }, + // {//没有 + // "name":"红军桥及红军瀑布", + // "location":14, + // "canvasLeft":2.6, + // "mapMarkX":0.5269, + // "mapMarkY":0.218, + // }, + // { + // "name":"粉黛草观赏区", + // "location":15, + // "canvasLeft":3.87, + // "mapMarkX":0.26, + // "mapMarkY":0.36, + // }, + // { + // "name":"飞花驿站", + // "location":16, + // "canvasLeft":4, + // "mapMarkX":0.2, + // "mapMarkY":0.414, + // } ] scenicArea = {//景区mac对应的景区序号,"65535:1"对应coordinate中的1号 - "65535:1":16, - "65535:2":16, - "65535:3":16, - "65535:4":16, + "65535:1":1, + "65535:2":1, + "65535:3":2, + "65535:4":2, } componentWillUnmount() { @@ -194,6 +199,67 @@ export default class Index extends Component { } } } + latLng2Pixel(lng, lat) {//latitude 纬度 longitude经度 + var size = (2 << 19) * 256 / 4; + var x = (1 + lng / 180) * size; + var y = Math.log(Math.tan((90 + lat) * Math.PI / 360)) / (Math.PI / 180); + y = (1 - y / 180) * size; + return [x - 106791808, y - 57042816]; + } + isInPolygon(checkPoint, polygonPoints) {//判断点是否在多边形内的算法 + var counter = 0;//checkpoint监测点 polygonPoints多边形点(数组) + var i; + var xinters; + var p1, p2; + var pointCount = polygonPoints.length; + p1 = polygonPoints[0]; + + for (i = 1; i <= pointCount; i++) { + p2 = polygonPoints[i % pointCount]; + if ( + checkPoint[0] > Math.min(p1[0], p2[0]) && + checkPoint[0] <= Math.max(p1[0], p2[0]) + ) { + if (checkPoint[1] <= Math.max(p1[1], p2[1])) { + if (p1[0] != p2[0]) { + xinters = + (checkPoint[0] - p1[0]) * + (p2[1] - p1[1]) / + (p2[0] - p1[0]) + + p1[1]; + if (p1[1] == p2[1] || checkPoint[1] <= xinters) { + counter++; + } + } + } + } + p1 = p2; + } + if (counter % 2 == 0) { + return false; + } else { + return true; + } + } + drawMapMark(num) { + let [x,y] = this.coordinate[num].pos["coordinates"] + let [m,n] = this.latLng2Pixel(x,y) + m = m/29844 + n = n/11777 + let temp1 = 70/this.state.canvasHeight + let temp2 = 35/this.state.canvasWidth + var currentCanvasLeft = -(m-temp2) * this.state.canvasWidth + 0.5*this.state.width; + var mapMarkx = this.state.canvasWidth * (m- temp2) + var mapMarky = this.state.canvasHeight * (n - temp1) + this.context.drawImage(mapMark, mapMarkx, mapMarky,70,70); + this.context.draw(); + this.setState({ + ...this.state, + canvasLeft:currentCanvasLeft, + currentLocation:this.coordinate[num].id, + }) + } + componentDidShow() { var that = this; var beaconsTempArray : any[] = []; @@ -208,7 +274,6 @@ export default class Index extends Component { // } // }) - var flag = 1; Taro.startBeaconDiscovery(info).then(() => {//开始搜索附近的iBeacon设备 Taro.onBeaconUpdate(function (res) {//监听 iBeacon 设备的更新事件 @@ -234,7 +299,7 @@ export default class Index extends Component { }; bleObj.rssi = beacons[i].rssi; bleObj.mac = that.scenicArea[`${beacons[i].major + ":" + beacons[i].minor}`]; - console.log(bleObj.mac); + // console.log(bleObj.mac); beaconsTempArray.push(bleObj); } } @@ -246,30 +311,23 @@ export default class Index extends Component { item.rssi = item.rssi / item.num; }) beaconsTempArray.sort(that.compare("rssi"));//对信号强度进行排序 - - if(beaconsTempArray.length && beaconsTempArray[0].rssi > that.state.criticalRssi && that.state.currentLocation != that.coordinate[beaconsTempArray[0].mac].location) + if(beaconsTempArray.length && beaconsTempArray[0].rssi > that.state.criticalRssi && that.state.currentLocation != that.coordinate[beaconsTempArray[0].mac].id) { - //console.log(that.coordinate[that.scenicArea[`${beaconsTempArray[0].mac}`]].mapMarkX) - var currentCanvasLeft = that.state.canvasWidth - that.coordinate[beaconsTempArray[0].mac].canvasLeft * that.state.width; - currentCanvasLeft = -currentCanvasLeft; - var ChaoJing = !(that.coordinate[beaconsTempArray[0].mac].location === 5 || that.coordinate[beaconsTempArray[0].mac].location === 4 || that.coordinate[beaconsTempArray[0].mac].location === 6) - console.log(ChaoJing) - console.log(currentCanvasLeft); - //console.log(currentCanvasLeft); - //console.log("changeLocation") - var mapMarkx = that.state.canvasWidth * that.coordinate[beaconsTempArray[0].mac].mapMarkX - var mapMarky = that.state.canvasHeight * that.coordinate[beaconsTempArray[0].mac].mapMarkY - that.context.drawImage(mapMark, mapMarkx, mapMarky,70,70); - that.context.draw(); - that.setState({ - ...that.state, - inChaoJing: ChaoJing, - canvasLeft:currentCanvasLeft, - currentLocation:that.coordinate[beaconsTempArray[0].mac].location, - currentMac:beaconsTempArray[0].mac, - currentRssi:beaconsTempArray[0].Rssi - }) + console.log(beaconsTempArray[0].mac) + that.drawMapMark(beaconsTempArray[0].mac) + } + if(!beaconsTempArray.length || beaconsTempArray[0].rssi < that.state.criticalRssi) {//处理ibeacon信号弱或者收不到ibeacon信号时情况 + // Taro.getLocation().then( d => { + // console.log(11,d) + // for(let i = 1; i < that.coordinate.length;i++) { + // // if(that.isInPolygon([d["longitude"],d["latitude"]], that.coordinate[i].area["coordinates"])) { + // // that.drawMapMark(i) + // // break; + // // } + // } + // }) } + beaconsTempArray = []; },this.state.interval*1000) function stopSearchBeacom() { @@ -283,7 +341,7 @@ export default class Index extends Component { this.context.fill() } componentDidHide() { } - touchMoveCallBack(e) {//手指移动回掉函数 + touchMoveCallBack(e) {//手指移动回调函数 let x = e.changedTouches[0]["x"] let currentTouchX = this.state.touch["startLocationX"]; let currentX = this.state.canvasLeft; @@ -297,8 +355,6 @@ export default class Index extends Component { }) } touchstartCallback(e) {//开始触摸时执行的函数,将触摸起始位置保存 - console.log(111); - console.log(e) this.setState({ ...this.state, touch:{ @@ -308,7 +364,11 @@ export default class Index extends Component { } }) } - + seeDetails() { + Taro.navigateTo({ + url: `../index/index?id=${this.state.currentLocation}` + }); + } render() { return ( @@ -319,20 +379,17 @@ export default class Index extends Component { onTouchStart={this.touchstartCallback} onTouchMove={this.touchMoveCallBack} > - {this.state.inChaoJing - ? - : - } - + - name of scenic Area; - {this.scenicArea["65535:1"]} + + {this.coordinate[this.state.currentLocation].name} + - 查看详情 + 查看详情 >> diff --git a/yarn.lock b/yarn.lock index f7214af..4d272a9 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3082,6 +3082,13 @@ flush-write-stream@^1.0.0: inherits "^2.0.1" readable-stream "^2.0.4" +flyio@^0.6.13: + version "0.6.13" + resolved "http://registry.npm.taobao.org/flyio/download/flyio-0.6.13.tgz#773011de5cc2dc9749e55629796fa810b8f4eb9f" + integrity sha1-dzAR3lzC3JdJ5VYpeW+oELj0658= + dependencies: + request "^2.85.0" + follow-redirects@^1.0.0: version "1.5.10" resolved "http://registry.npm.taobao.org/follow-redirects/download/follow-redirects-1.5.10.tgz#7b7a9f9aea2fdff36786a94ff643ed07f4ff5e2a" @@ -5901,7 +5908,7 @@ repeating@^2.0.0: dependencies: is-finite "^1.0.0" -request@^2.83.0, request@^2.87.0, request@^2.88.0: +request@^2.83.0, request@^2.85.0, request@^2.87.0, request@^2.88.0: version "2.88.0" resolved "http://registry.npm.taobao.org/request/download/request-2.88.0.tgz#9c2fca4f7d35b592efe57c7f0a55e81052124fef" integrity sha1-nC/KT301tZLv5Xx/ClXoEFIST+8=