├── .gitignore ├── README.md ├── chat_client ├── .gitignore ├── README.md ├── assets │ ├── Chat.fire │ ├── Chat.fire.meta │ ├── Loading.fire │ ├── Loading.fire.meta │ ├── prefab.meta │ ├── prefab │ │ ├── OtherMsg.prefab │ │ ├── OtherMsg.prefab.meta │ │ ├── SelfMsg.prefab │ │ ├── SelfMsg.prefab.meta │ │ ├── userNode.prefab │ │ └── userNode.prefab.meta │ ├── scripts.meta │ ├── scripts │ │ ├── ctrls.meta │ │ ├── ctrls │ │ │ ├── ChatCtrl.ts │ │ │ ├── ChatCtrl.ts.meta │ │ │ ├── LoadingCtrl.ts │ │ │ ├── LoadingCtrl.ts.meta │ │ │ ├── LoginCtrl.ts │ │ │ └── LoginCtrl.ts.meta │ │ ├── libs.meta │ │ ├── libs │ │ │ ├── md5.min.js │ │ │ ├── md5.min.js.meta │ │ │ ├── socket.meta │ │ │ └── socket │ │ │ │ ├── socket.io.js │ │ │ │ └── socket.io.js.meta │ │ ├── nodes.meta │ │ ├── nodes │ │ │ ├── UserNode.ts │ │ │ └── UserNode.ts.meta │ │ ├── objs.meta │ │ ├── objs │ │ │ ├── Params.ts │ │ │ └── Params.ts.meta │ │ ├── utils.meta │ │ └── utils │ │ │ ├── GameUtil.ts │ │ │ ├── GameUtil.ts.meta │ │ │ ├── IoUtil.ts │ │ │ ├── IoUtil.ts.meta │ │ │ ├── NetUtil.ts │ │ │ ├── NetUtil.ts.meta │ │ │ ├── Toast.ts │ │ │ └── Toast.ts.meta │ ├── textures.meta │ └── textures │ │ ├── bg.meta │ │ ├── bg │ │ ├── bg1.png │ │ └── bg1.png.meta │ │ ├── blue.png │ │ ├── blue.png.meta │ │ ├── green.png │ │ ├── green.png.meta │ │ ├── green_pressed.png │ │ ├── green_pressed.png.meta │ │ ├── grey.png │ │ ├── grey.png.meta │ │ ├── head.jpg │ │ ├── head.jpg.meta │ │ ├── msg_tip_left.png │ │ ├── msg_tip_left.png.meta │ │ ├── msg_tip_right.png │ │ ├── msg_tip_right.png.meta │ │ ├── normal_board.png │ │ ├── normal_board.png.meta │ │ ├── white_inlay.png │ │ ├── white_inlay.png.meta │ │ ├── yellow.png │ │ └── yellow.png.meta ├── creator.d.ts ├── jsconfig.json ├── package-lock.json ├── project.json ├── settings │ ├── builder.json │ ├── builder.panel.json │ └── project.json ├── template-banner.png ├── template.json └── tsconfig.json └── chat_server ├── DbClient.js ├── app.js ├── db └── db.sqlite ├── models ├── Message.js └── User.js ├── package-lock.json ├── package.json ├── yarn-error.log └── yarn.lock /.gitignore: -------------------------------------------------------------------------------- 1 | /chat_client/node_modules 2 | /chat_server/node_modules 3 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | ### 写在前头 2 | 3 |   **本实例主要给刚接触CocosCreator和网络开发小白使用。老司机可以马上调头,这是开往幼儿园的专列。** 4 | 5 | ### 背景 6 | 7 |   **聊天室作为大多数网络游戏开发人员的第一个项目,实现了一对多,一对一的数据交互,作为基石一般的存在,可以在上面搭建出各种复杂多变的网络程序,此篇作为我网络游戏开发的第一篇,希望与大家共勉。** 8 | 9 | ### 服务器的选择 10 | 11 | > 与CocosCretor搭配的全栈解决方案当然是Nodejs了 12 | 13 | - [Pomelo](https://github.com/NetEase/pomelo) 14 | - 网易开源的游戏应用服务器 15 | - 能用简单的代码搭建一个稳定的服务器 16 | - 丰富的组件 17 | - 完善的客户端类库 18 | - [WebSocket](https://github.com/websockets/ws) 19 | - 浏览器原生支持 20 | - 方法监听简单明了 21 | - [阮一峰大大的详细解释](http://www.ruanyifeng.com/blog/2017/05/websocket.html) 22 | - [Socket.io](https://github.com/socketio/socket.io) 23 | - 建立在webSicket之上 24 | - 拥有完善的处理方法 25 | - 类库更新十分勤快 拥有大量的用户 26 | 27 | 选型 | 结果 28 | ---|-- 29 | **Pomelo** 比较适合有一定的网络开发基础的人使用。 |**PASS** | 30 | 纯**WebSocket**的开发相对比较简单,但是有更好的方案. |**PASS** | 31 | **Socket.io** 反正我没找到更好的... |**Bingo** | 32 | 33 | ### 服务器的开发 34 | 35 | > 码第一行代码之前默念 善哉善哉 bug去也 36 | 37 | **1.安装npm包** 38 | 找到你的项目目录执行以下包安装命令 39 | ```bash 40 | npm install express --save 41 | npm install socket.io --save 42 | npm install underscore --save 43 | ``` 44 | **2.引入包** 45 | 编写一个app.js的文件 46 | 47 | ```js 48 | const express = require('express'); 49 | const app = express(); 50 | const http = require('http').Server(app); 51 | const sio = require('socket.io')(http); 52 | const _ = require('underscore'); 53 | ``` 54 | 55 | **3.设置跨域访问** 56 | 之后使用express做工具服务器的时候会用到 57 | ```js 58 | //设置跨域访问 59 | app.all('*', function(req, res, next) { 60 | res.header("Access-Control-Allow-Origin", "*"); 61 | res.header("Access-Control-Allow-Headers", "X-Requested-With"); 62 | res.header("Access-Control-Allow-Methods","PUT,POST,GET,DELETE,OPTIONS"); 63 | res.header("X-Powered-By",' 3.2.1') 64 | res.header("Content-Type", "application/json;charset=utf-8"); 65 | next(); 66 | }); 67 | ``` 68 | **4.绑定端口** 69 | 70 | ```js 71 | app.get('/',(req,res)=>{ 72 | res.send('

Hello world

'); 73 | }); 74 | 75 | http.listen(3000, ()=>{ 76 | console.log('listening on http://127.0.0.1:3000'); 77 | }); 78 | ``` 79 | **5.测试绑定** 80 | 81 | 启动服务器 82 | ```bash 83 | node app 84 | ``` 85 | 打开网址查看 出现HelloWorld即为成功 86 | 87 | [http://127.0.0.1:3000](http://127.0.0.1:3000) 88 | 89 | **6.编写一个简单聊天服务器** 90 | - 代码量50行左右 有完整的注释 91 | - 简单的分析一下 92 | - sio的on和emit与nodejs的事件监听和触发相似 93 | - **connection**用来监听客户端的链接 94 | - socket是获得的客户句柄 95 | - socket.on 用于注册自定义事件 96 | - user和msgObj的内容在客户端的Params.ts里 97 | 98 | ```js 99 | /**********************关于聊天的相关操作*************************/ 100 | //保存用户的数组 101 | var userList = []; 102 | //接收客户端的连接 103 | sio.on('connection',socket=>{ 104 | //登录 105 | socket.on('login',(user)=>{ 106 | console.log('login'); 107 | console.log(user); 108 | user.id = socket.id; 109 | userList.push(user); 110 | //群发用户列表 111 | sio.emit('userList',userList); 112 | //发送当前用户列表信息 113 | socket.emit('userInfo',user); 114 | //除自己外广播用户登录信息 115 | socket.broadcast.emit('loginInfo',user.name+"上线了。"); 116 | }); 117 | //客户端断开 118 | socket.on('disconnect',()=>{ 119 | //查出当前离开的用户 120 | let user = _.findWhere(userList,{id:socket.id}); 121 | if(user){ 122 | //剔除当前离线用户 123 | userList = _.without(userList,user); 124 | //发送当前用户列表信息 125 | sio.emit('userList',userList); 126 | //除自己外广播用户断线信息 127 | socket.broadcast.emit('loginInfo',user.name+"下线了。"); 128 | } 129 | 130 | }); 131 | //群发事件 132 | socket.on('toAll',function(msgObj){ 133 | socket.broadcast.emit('toAll',msgObj); 134 | }); 135 | //单发事件 136 | socket.on('toOne',function(msgObj){ 137 | let toSocket = _.findWhere(sio.sockets.sockets,{id:msgObj.to}); 138 | toSocket.emit('toOne', msgObj); 139 | }); 140 | 141 | /** 142 | * 心跳包 143 | */ 144 | socket.on('game_ping',function(data){ 145 | socket.emit('game_pong'); 146 | }); 147 | }); 148 | ``` 149 | 150 | 151 | 152 | ### 聊天室基本界面 153 | 154 | ``` 155 | graph TD 156 | H(loading界面)-->A 157 | A(用户名输入界面)-->B(聊天室界面) 158 | B-->D(群聊界面) 159 | B-->E(私聊界面) 160 | ``` 161 | 162 | ### 项目的实际界面截图 163 | 164 | > 登录界面 165 | 166 | ![](http://onb8jc081.bkt.clouddn.com/18-3-7/62636407.jpg) 167 | 168 | > 聊天室的界面 169 | 170 | ![](http://onb8jc081.bkt.clouddn.com/18-3-7/89831164.jpg) 171 | 172 | > 发群聊消息 173 | 174 | ![](http://onb8jc081.bkt.clouddn.com/18-3-7/91638788.jpg) 175 | 176 | > 发私聊消息 177 | 178 | ![](http://onb8jc081.bkt.clouddn.com/18-3-7/79468759.jpg) 179 | 180 | > 简单起见 私聊消息红色显示 181 | 182 | ![](http://onb8jc081.bkt.clouddn.com/18-3-7/50868367.jpg) 183 | 184 | > 用户下线通知 185 | 186 | ![](http://onb8jc081.bkt.clouddn.com/18-3-7/88703544.jpg) 187 | 188 | > 用户上线通知 189 | 190 | ![](http://onb8jc081.bkt.clouddn.com/18-3-7/22475358.jpg) 191 | 192 | 193 | ### 客户端的开发 194 | **客户端代码会在后面放出 简单的分析下几个类** 195 | 196 | > NetUtil.ts 参考麒麟子的net.js 197 | 198 | - ts中window.io是不存在的需要使用转化获得 199 | 200 | ```ts 201 | const io = (window as any).io || {}; 202 | ``` 203 | 204 | - 使用io.connect连接到服务器 205 | 206 | ```ts 207 | init(){ 208 | let opts = { 209 | 'reconnection':false, 210 | 'force new connection': true, 211 | 'transports':['websocket', 'polling'] 212 | } 213 | this.sio = io.connect('http://127.0.0.1:3000',opts); 214 | 215 | this.sio.on('connect',(data)=>{ 216 | console.log('connect'); 217 | this.connected = true; 218 | }) 219 | 220 | this.sio.on('disconnect',(data)=>{ 221 | console.log("disconnect"); 222 | this.connected = false; 223 | }); 224 | 225 | this.startHearbeat(); 226 | } 227 | ``` 228 | - 封装on / emit方法 方便使用 229 | 230 | ```ts 231 | /** 232 | * 绑定事件 233 | * @param event 234 | * @param cb 235 | */ 236 | on(event:string,cb){ 237 | this.sio.on(event,cb); 238 | } 239 | 240 | /** 241 | * 击发服务器事件 242 | * @param event 243 | * @param data 244 | */ 245 | emit(event:string,data?:any){ 246 | if(data){ 247 | this.sio.emit(event,data); 248 | return; 249 | } 250 | this.sio.emit(event); 251 | } 252 | ``` 253 | 254 | > LoadingCtrl.ts 255 | 256 | - 就干了一件事情初始化连接 257 | - 之后要优于其他操作的初始化都放到这里 比如 i18n 258 | ```ts 259 | //初始化项目 260 | initGame(){ 261 | NetUtil.Instance.init(); 262 | 263 | } 264 | ``` 265 | 266 | > LoginCtrl.ts 267 | 268 | - 获得用户名 并发送给服务器 269 | 270 | ```ts 271 | login(){ 272 | let name = this.userBox.string; 273 | if(name.length<2){ 274 | return; 275 | } 276 | let user:User ={id:"",name,imgUrl:""}; 277 | NetUtil.Instance.emit('login',user); 278 | } 279 | ``` 280 | 281 | > ChatCtrl.ts 282 | 283 | - 注册服务器的事件 284 | 285 | ```ts 286 | onLoad () { 287 | //注册用户登入登出信息 288 | NetUtil.Instance.on('loginInfo',(msg:string)=>{ 289 | cc.log(msg); 290 | Toast.makeText(msg,Toast.LENGTH_LONG).show(); 291 | }) 292 | //获得当前用户信息 293 | NetUtil.Instance.on('userInfo',(user:User)=>{ 294 | GameUtil.Instance.userInfo = user; 295 | cc.log(user); 296 | }) 297 | //广播的用户列表信息 298 | NetUtil.Instance.on('userList',(userList)=>{ 299 | cc.find('Canvas/login_room').active = false; 300 | //获取当前的用户列表 301 | this.userList = userList; 302 | //更新容器 303 | this.updateUserList(this.userList); 304 | }); 305 | //注册发送给全部人的消息 306 | NetUtil.Instance.on('toAll',(msg:Message)=>{ 307 | let node = cc.instantiate(this.otherMsgItem); 308 | node.getChildByName('name').getComponent(cc.Label).string = msg.from.name; 309 | node.getChildByName('msgBox').getChildByName('msg').getComponent(cc.Label).string = msg.msg; 310 | this.msgContent.addChild(node); 311 | if(this.msgContent.height>480){ 312 | this.msgScrollView.scrollToBottom(0.3); 313 | } 314 | }); 315 | //注册发送给一个人的消息 316 | NetUtil.Instance.on('toOne',(msg:Message)=>{ 317 | let node = cc.instantiate(this.otherMsgItem); 318 | node.getChildByName('name').getComponent(cc.Label).string = msg.from.name; 319 | node.getChildByName('msgBox').getChildByName('msg').getComponent(cc.Label).string = msg.msg; 320 | node.getChildByName('msgBox').getChildByName('msg').color = cc.Color.RED; 321 | this.msgContent.addChild(node); 322 | if(this.msgContent.height>480){ 323 | this.msgScrollView.scrollToBottom(0.3); 324 | } 325 | }); 326 | } 327 | ``` 328 | 329 | > UserNode.ts 330 | 331 | - 预制件通过user初始化 332 | - 注册了点击事件 333 | - 点击展示单独发送的面板 334 | 335 | ```ts 336 | init(user:User){ 337 | this.user = user; 338 | this.node.on(cc.Node.EventType.TOUCH_END,event=>{ 339 | //获得控制脚本 340 | let chatCtrl = cc.find('Canvas/chat_room').getComponent(ChatCtrl); 341 | chatCtrl.showSingleBox(this.user); 342 | }); 343 | } 344 | ``` 345 | 346 | > Params.ts 347 | 348 | - 定义了两个接口 349 | 350 | ```ts 351 | export interface User{ 352 | id:string; //用户的id 353 | name:string; //用户名 354 | imgUrl:string; //用户头像的图片地址 355 | } 356 | 357 | export interface Message{ 358 | from:User ; //发送的用户 359 | msg:string ; //发送的信息 360 | to?:string ; //发送给的人 没有则发送全部 361 | } 362 | ``` 363 | 364 | ### 下载: 365 | GitHub地址:[https://github.com/SeaPlanet/cocoscreator_chat](https://github.com/SeaPlanet/cocoscreator_chat) 366 | 367 | 368 | ### 加入频道,实现分频道聊天 369 | 370 | - 频道的概念即为游戏中分房间的概念,游戏房间中的数据只对房间内的人广播,可以大大提高效率,减少消耗 371 | 372 | ![](http://onb8jc081.bkt.clouddn.com/18-4-2/5640543.jpg) 373 | 374 | ![](http://onb8jc081.bkt.clouddn.com/18-4-2/4240174.jpg) 375 | 376 | 377 | **之前用于保存用户的数组改为了对象** 378 | 379 | ```js 380 | //保存用户的数组 381 | var userList = {}; 382 | ``` 383 | 384 | **修改后的用户登录接口** 385 | 386 | - **userList[user.channel]** 用来保存用户 387 | - **join**方法用于创建和加入频道 388 | - **to**方法用于切换到频道 389 | - 下面会出现的**leave**用于离开频道 390 | 391 | ```js 392 | //登录 393 | socket.on('login',(user)=>{ 394 | console.log('login'); 395 | console.log(user); 396 | user.id = socket.id; 397 | if(!userList[user.channel]){ 398 | userList[user.channel]=[]; 399 | } 400 | userList[user.channel].push(user); 401 | socket.join(user.channel); 402 | //将频道赋值给socket 403 | socket.channel = user.channel; 404 | //群发用户列表 405 | sio.to(user.channel).emit('userList',userList[user.channel]); 406 | //发送当前用户列表信息 407 | socket.emit('userInfo',user); 408 | //除自己外广播用户登录信息 409 | socket.broadcast.to(user.channel).emit('loginInfo',user.name+"上线了。"); 410 | }); 411 | ``` 412 | 413 | **客户端处修改** 414 | 415 | - 加入频道输入框 416 | - 加入频道属性 417 | 418 | 419 | ```ts 420 | export interface User{ 421 | id:string; //用户的id 422 | name:string; //用户名 423 | channel:string; //当前的频道 424 | imgUrl:string; //用户头像的图片地址 425 | } 426 | 427 | ``` 428 | 429 | ### 更新下载: 430 | GitHub地址:[https://github.com/SeaPlanet/cocoscreator_chat](https://github.com/SeaPlanet/cocoscreator_chat) 431 | 432 | 433 | ### Tips: 434 | 435 | #### Socket.io的默认事件列表 436 | 437 | > 服务端事件 438 | 439 | 事件名称 | 事件解释 440 | ---|--- 441 | connection | socket连接成功之后触发,用于初始化 442 | message | 客户端通过socket.send来传送消息时触发此事件 443 | anything | 收到任何事件时触发 444 | disconnect | socket失去连接时触发 445 | 446 | 447 | > 客户端事件 448 | 449 | 事件名称 | 事件解释 450 | ---|--- 451 | connect|连接成功 452 | connecting|正在连接 453 | disconnect|断开连接 454 | connect_failed|连接失败 455 | error|错误发生,并且无法被其他事件类型所处理 456 | message|同服务器端message事件 457 | anything|同服务器端anything事件 458 | reconnect_failed|重连失败 459 | reconnect|成功重连 460 | reconnecting|正在重连 461 | 462 | 463 | 464 | -------------------------------------------------------------------------------- /chat_client/.gitignore: -------------------------------------------------------------------------------- 1 | #///////////////////////////////////////////////////////////////////////////// 2 | # Fireball Projects 3 | #///////////////////////////////////////////////////////////////////////////// 4 | 5 | library/ 6 | temp/ 7 | local/ 8 | build/ 9 | 10 | #///////////////////////////////////////////////////////////////////////////// 11 | # Logs and databases 12 | #///////////////////////////////////////////////////////////////////////////// 13 | 14 | *.log 15 | *.sql 16 | *.sqlite 17 | 18 | #///////////////////////////////////////////////////////////////////////////// 19 | # files for debugger 20 | #///////////////////////////////////////////////////////////////////////////// 21 | 22 | *.sln 23 | *.csproj 24 | *.pidb 25 | *.unityproj 26 | *.suo 27 | 28 | #///////////////////////////////////////////////////////////////////////////// 29 | # OS generated files 30 | #///////////////////////////////////////////////////////////////////////////// 31 | 32 | .DS_Store 33 | ehthumbs.db 34 | Thumbs.db 35 | 36 | #///////////////////////////////////////////////////////////////////////////// 37 | # exvim files 38 | #///////////////////////////////////////////////////////////////////////////// 39 | 40 | *UnityVS.meta 41 | *.err 42 | *.err.meta 43 | *.exvim 44 | *.exvim.meta 45 | *.vimentry 46 | *.vimentry.meta 47 | *.vimproject 48 | *.vimproject.meta 49 | .vimfiles.*/ 50 | .exvim.*/ 51 | quick_gen_project_*_autogen.bat 52 | quick_gen_project_*_autogen.bat.meta 53 | quick_gen_project_*_autogen.sh 54 | quick_gen_project_*_autogen.sh.meta 55 | .exvim.app 56 | 57 | #///////////////////////////////////////////////////////////////////////////// 58 | # webstorm files 59 | #///////////////////////////////////////////////////////////////////////////// 60 | 61 | .idea/ 62 | 63 | #////////////////////////// 64 | # VS Code 65 | #////////////////////////// 66 | 67 | .vscode/ -------------------------------------------------------------------------------- /chat_client/README.md: -------------------------------------------------------------------------------- 1 | # hello-world 2 | Hello world new project template. 3 | -------------------------------------------------------------------------------- /chat_client/assets/Chat.fire.meta: -------------------------------------------------------------------------------- 1 | { 2 | "ver": "1.0.0", 3 | "uuid": "3b5e6389-969e-411f-a4d0-e94a4ad28e39", 4 | "asyncLoadAssets": false, 5 | "autoReleaseAssets": false, 6 | "subMetas": {} 7 | } -------------------------------------------------------------------------------- /chat_client/assets/Loading.fire: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "__type__": "cc.SceneAsset", 4 | "_name": "", 5 | "_objFlags": 0, 6 | "_rawFiles": null, 7 | "scene": { 8 | "__id__": 1 9 | } 10 | }, 11 | { 12 | "__type__": "cc.Scene", 13 | "_objFlags": 0, 14 | "_parent": null, 15 | "_children": [ 16 | { 17 | "__id__": 2 18 | } 19 | ], 20 | "_tag": -1, 21 | "_active": true, 22 | "_components": [], 23 | "_prefab": null, 24 | "_id": "77b2a6f9-40ac-4aa5-bde9-2ba95d1ac264", 25 | "_opacity": 255, 26 | "_color": { 27 | "__type__": "cc.Color", 28 | "r": 255, 29 | "g": 255, 30 | "b": 255, 31 | "a": 255 32 | }, 33 | "_cascadeOpacityEnabled": true, 34 | "_anchorPoint": { 35 | "__type__": "cc.Vec2", 36 | "x": 0, 37 | "y": 0 38 | }, 39 | "_contentSize": { 40 | "__type__": "cc.Size", 41 | "width": 0, 42 | "height": 0 43 | }, 44 | "_localZOrder": 0, 45 | "_globalZOrder": 0, 46 | "_opacityModifyRGB": false, 47 | "groupIndex": 0, 48 | "autoReleaseAssets": false 49 | }, 50 | { 51 | "__type__": "cc.Node", 52 | "_name": "Canvas", 53 | "_objFlags": 0, 54 | "_parent": { 55 | "__id__": 1 56 | }, 57 | "_children": [ 58 | { 59 | "__id__": 3 60 | }, 61 | { 62 | "__id__": 5 63 | } 64 | ], 65 | "_tag": -1, 66 | "_active": true, 67 | "_components": [ 68 | { 69 | "__id__": 7 70 | }, 71 | { 72 | "__id__": 8 73 | } 74 | ], 75 | "_prefab": null, 76 | "_id": "70Mv40cylBrJkPb+9NJc+f", 77 | "_opacity": 255, 78 | "_color": { 79 | "__type__": "cc.Color", 80 | "r": 255, 81 | "g": 255, 82 | "b": 255, 83 | "a": 255 84 | }, 85 | "_cascadeOpacityEnabled": true, 86 | "_anchorPoint": { 87 | "__type__": "cc.Vec2", 88 | "x": 0.5, 89 | "y": 0.5 90 | }, 91 | "_contentSize": { 92 | "__type__": "cc.Size", 93 | "width": 960, 94 | "height": 640 95 | }, 96 | "_rotationX": 0, 97 | "_rotationY": 0, 98 | "_scaleX": 1, 99 | "_scaleY": 1, 100 | "_position": { 101 | "__type__": "cc.Vec2", 102 | "x": 480, 103 | "y": 320 104 | }, 105 | "_skewX": 0, 106 | "_skewY": 0, 107 | "_localZOrder": 0, 108 | "_globalZOrder": 0, 109 | "_opacityModifyRGB": false, 110 | "groupIndex": 0 111 | }, 112 | { 113 | "__type__": "cc.Node", 114 | "_name": "bg", 115 | "_objFlags": 0, 116 | "_parent": { 117 | "__id__": 2 118 | }, 119 | "_children": [], 120 | "_tag": -1, 121 | "_active": true, 122 | "_components": [ 123 | { 124 | "__id__": 4 125 | } 126 | ], 127 | "_prefab": null, 128 | "_id": "edWDANksBCd4j2iMyMt76e", 129 | "_opacity": 255, 130 | "_color": { 131 | "__type__": "cc.Color", 132 | "r": 255, 133 | "g": 255, 134 | "b": 255, 135 | "a": 255 136 | }, 137 | "_cascadeOpacityEnabled": true, 138 | "_anchorPoint": { 139 | "__type__": "cc.Vec2", 140 | "x": 0.5, 141 | "y": 0.5 142 | }, 143 | "_contentSize": { 144 | "__type__": "cc.Size", 145 | "width": 1643, 146 | "height": 804 147 | }, 148 | "_rotationX": 0, 149 | "_rotationY": 0, 150 | "_scaleX": 1, 151 | "_scaleY": 1, 152 | "_position": { 153 | "__type__": "cc.Vec2", 154 | "x": 0, 155 | "y": 0 156 | }, 157 | "_skewX": 0, 158 | "_skewY": 0, 159 | "_localZOrder": 0, 160 | "_globalZOrder": 0, 161 | "_opacityModifyRGB": false, 162 | "groupIndex": 0 163 | }, 164 | { 165 | "__type__": "cc.Sprite", 166 | "_name": "", 167 | "_objFlags": 0, 168 | "node": { 169 | "__id__": 3 170 | }, 171 | "_enabled": true, 172 | "_spriteFrame": { 173 | "__uuid__": "806b88f6-e41a-4b7c-a2b2-6ebe74b8f484" 174 | }, 175 | "_type": 0, 176 | "_sizeMode": 1, 177 | "_fillType": 0, 178 | "_fillCenter": { 179 | "__type__": "cc.Vec2", 180 | "x": 0, 181 | "y": 0 182 | }, 183 | "_fillStart": 0, 184 | "_fillRange": 0, 185 | "_isTrimmedMode": true, 186 | "_srcBlendFactor": 770, 187 | "_dstBlendFactor": 771, 188 | "_atlas": null 189 | }, 190 | { 191 | "__type__": "cc.Node", 192 | "_name": "New Label", 193 | "_objFlags": 0, 194 | "_parent": { 195 | "__id__": 2 196 | }, 197 | "_children": [], 198 | "_tag": -1, 199 | "_active": true, 200 | "_components": [ 201 | { 202 | "__id__": 6 203 | } 204 | ], 205 | "_prefab": null, 206 | "_id": "43QNnvcWBD5oXNC79ezmwW", 207 | "_opacity": 255, 208 | "_color": { 209 | "__type__": "cc.Color", 210 | "r": 255, 211 | "g": 255, 212 | "b": 255, 213 | "a": 255 214 | }, 215 | "_cascadeOpacityEnabled": true, 216 | "_anchorPoint": { 217 | "__type__": "cc.Vec2", 218 | "x": 0.5, 219 | "y": 0.5 220 | }, 221 | "_contentSize": { 222 | "__type__": "cc.Size", 223 | "width": 153.34, 224 | "height": 40 225 | }, 226 | "_rotationX": 0, 227 | "_rotationY": 0, 228 | "_scaleX": 1, 229 | "_scaleY": 1, 230 | "_position": { 231 | "__type__": "cc.Vec2", 232 | "x": 0, 233 | "y": 0 234 | }, 235 | "_skewX": 0, 236 | "_skewY": 0, 237 | "_localZOrder": 0, 238 | "_globalZOrder": 0, 239 | "_opacityModifyRGB": false, 240 | "groupIndex": 0 241 | }, 242 | { 243 | "__type__": "cc.Label", 244 | "_name": "", 245 | "_objFlags": 0, 246 | "node": { 247 | "__id__": 5 248 | }, 249 | "_enabled": true, 250 | "_useOriginalSize": false, 251 | "_actualFontSize": 40, 252 | "_fontSize": 40, 253 | "_lineHeight": 40, 254 | "_enableWrapText": true, 255 | "_N$file": null, 256 | "_isSystemFontUsed": true, 257 | "_spacingX": 0, 258 | "_N$string": "加载中...", 259 | "_N$horizontalAlign": 1, 260 | "_N$verticalAlign": 1, 261 | "_N$fontFamily": "Arial", 262 | "_N$overflow": 0 263 | }, 264 | { 265 | "__type__": "cc.Canvas", 266 | "_name": "", 267 | "_objFlags": 0, 268 | "node": { 269 | "__id__": 2 270 | }, 271 | "_enabled": true, 272 | "_designResolution": { 273 | "__type__": "cc.Size", 274 | "width": 960, 275 | "height": 640 276 | }, 277 | "_fitWidth": false, 278 | "_fitHeight": true 279 | }, 280 | { 281 | "__type__": "c09abma/YNBer0jiF72D0TX", 282 | "_name": "", 283 | "_objFlags": 0, 284 | "node": { 285 | "__id__": 2 286 | }, 287 | "_enabled": true 288 | } 289 | ] -------------------------------------------------------------------------------- /chat_client/assets/Loading.fire.meta: -------------------------------------------------------------------------------- 1 | { 2 | "ver": "1.0.0", 3 | "uuid": "77b2a6f9-40ac-4aa5-bde9-2ba95d1ac264", 4 | "asyncLoadAssets": false, 5 | "autoReleaseAssets": false, 6 | "subMetas": {} 7 | } -------------------------------------------------------------------------------- /chat_client/assets/prefab.meta: -------------------------------------------------------------------------------- 1 | { 2 | "ver": "1.0.1", 3 | "uuid": "9372a1a5-f751-40af-82ee-f228bb951d60", 4 | "subMetas": {} 5 | } -------------------------------------------------------------------------------- /chat_client/assets/prefab/OtherMsg.prefab: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "__type__": "cc.Prefab", 4 | "_name": "", 5 | "_objFlags": 0, 6 | "_rawFiles": null, 7 | "data": { 8 | "__id__": 1 9 | } 10 | }, 11 | { 12 | "__type__": "cc.Node", 13 | "_name": "OtherMsg", 14 | "_objFlags": 0, 15 | "_parent": null, 16 | "_children": [ 17 | { 18 | "__id__": 2 19 | }, 20 | { 21 | "__id__": 8 22 | }, 23 | { 24 | "__id__": 11 25 | }, 26 | { 27 | "__id__": 14 28 | } 29 | ], 30 | "_tag": -1, 31 | "_active": true, 32 | "_components": [], 33 | "_prefab": { 34 | "__id__": 21 35 | }, 36 | "_id": "", 37 | "_opacity": 255, 38 | "_color": { 39 | "__type__": "cc.Color", 40 | "r": 255, 41 | "g": 255, 42 | "b": 255, 43 | "a": 255 44 | }, 45 | "_cascadeOpacityEnabled": true, 46 | "_anchorPoint": { 47 | "__type__": "cc.Vec2", 48 | "x": 0.5, 49 | "y": 0.5 50 | }, 51 | "_contentSize": { 52 | "__type__": "cc.Size", 53 | "width": 700, 54 | "height": 100 55 | }, 56 | "_rotationX": 0, 57 | "_rotationY": 0, 58 | "_scaleX": 1, 59 | "_scaleY": 1, 60 | "_position": { 61 | "__type__": "cc.Vec2", 62 | "x": 0, 63 | "y": -50 64 | }, 65 | "_skewX": 0, 66 | "_skewY": 0, 67 | "_localZOrder": 0, 68 | "_globalZOrder": 0, 69 | "_opacityModifyRGB": false, 70 | "groupIndex": 0 71 | }, 72 | { 73 | "__type__": "cc.Node", 74 | "_name": "imgMask", 75 | "_objFlags": 0, 76 | "_parent": { 77 | "__id__": 1 78 | }, 79 | "_children": [ 80 | { 81 | "__id__": 3 82 | } 83 | ], 84 | "_tag": -1, 85 | "_active": true, 86 | "_components": [ 87 | { 88 | "__id__": 6 89 | } 90 | ], 91 | "_prefab": { 92 | "__id__": 7 93 | }, 94 | "_id": "", 95 | "_opacity": 255, 96 | "_color": { 97 | "__type__": "cc.Color", 98 | "r": 255, 99 | "g": 255, 100 | "b": 255, 101 | "a": 255 102 | }, 103 | "_cascadeOpacityEnabled": true, 104 | "_anchorPoint": { 105 | "__type__": "cc.Vec2", 106 | "x": 0.5, 107 | "y": 0.5 108 | }, 109 | "_contentSize": { 110 | "__type__": "cc.Size", 111 | "width": 80, 112 | "height": 80 113 | }, 114 | "_rotationX": 0, 115 | "_rotationY": 0, 116 | "_scaleX": 1, 117 | "_scaleY": 1, 118 | "_position": { 119 | "__type__": "cc.Vec2", 120 | "x": -300, 121 | "y": 0 122 | }, 123 | "_skewX": 0, 124 | "_skewY": 0, 125 | "_localZOrder": 0, 126 | "_globalZOrder": 0, 127 | "_opacityModifyRGB": false, 128 | "groupIndex": 0 129 | }, 130 | { 131 | "__type__": "cc.Node", 132 | "_name": "img", 133 | "_objFlags": 0, 134 | "_parent": { 135 | "__id__": 2 136 | }, 137 | "_children": [], 138 | "_tag": -1, 139 | "_active": true, 140 | "_components": [ 141 | { 142 | "__id__": 4 143 | } 144 | ], 145 | "_prefab": { 146 | "__id__": 5 147 | }, 148 | "_id": "", 149 | "_opacity": 255, 150 | "_color": { 151 | "__type__": "cc.Color", 152 | "r": 255, 153 | "g": 255, 154 | "b": 255, 155 | "a": 255 156 | }, 157 | "_cascadeOpacityEnabled": true, 158 | "_anchorPoint": { 159 | "__type__": "cc.Vec2", 160 | "x": 0.5, 161 | "y": 0.5 162 | }, 163 | "_contentSize": { 164 | "__type__": "cc.Size", 165 | "width": 100, 166 | "height": 100 167 | }, 168 | "_rotationX": 0, 169 | "_rotationY": 0, 170 | "_scaleX": 1, 171 | "_scaleY": 1, 172 | "_position": { 173 | "__type__": "cc.Vec2", 174 | "x": 0, 175 | "y": 0 176 | }, 177 | "_skewX": 0, 178 | "_skewY": 0, 179 | "_localZOrder": 0, 180 | "_globalZOrder": 0, 181 | "_opacityModifyRGB": false, 182 | "groupIndex": 0 183 | }, 184 | { 185 | "__type__": "cc.Sprite", 186 | "_name": "", 187 | "_objFlags": 0, 188 | "node": { 189 | "__id__": 3 190 | }, 191 | "_enabled": true, 192 | "_spriteFrame": { 193 | "__uuid__": "b29db6a7-7857-4fa6-a5ff-e0f3c26069ac" 194 | }, 195 | "_type": 0, 196 | "_sizeMode": 1, 197 | "_fillType": 0, 198 | "_fillCenter": { 199 | "__type__": "cc.Vec2", 200 | "x": 0, 201 | "y": 0 202 | }, 203 | "_fillStart": 0, 204 | "_fillRange": 0, 205 | "_isTrimmedMode": true, 206 | "_srcBlendFactor": 770, 207 | "_dstBlendFactor": 771, 208 | "_atlas": null 209 | }, 210 | { 211 | "__type__": "cc.PrefabInfo", 212 | "root": { 213 | "__id__": 1 214 | }, 215 | "asset": { 216 | "__uuid__": "2afd8bdd-44c8-4c08-84f4-c92af0f3bf78" 217 | }, 218 | "fileId": "16g1T+7EtKQY3SiuOJiOiO", 219 | "sync": false 220 | }, 221 | { 222 | "__type__": "cc.Mask", 223 | "_name": "", 224 | "_objFlags": 0, 225 | "node": { 226 | "__id__": 2 227 | }, 228 | "_enabled": true, 229 | "_type": 1, 230 | "_segements": 64, 231 | "_N$spriteFrame": null, 232 | "_N$alphaThreshold": 1, 233 | "_N$inverted": false 234 | }, 235 | { 236 | "__type__": "cc.PrefabInfo", 237 | "root": { 238 | "__id__": 1 239 | }, 240 | "asset": { 241 | "__uuid__": "2afd8bdd-44c8-4c08-84f4-c92af0f3bf78" 242 | }, 243 | "fileId": "b3ZH6iiQpGabUM3Y0iVzId", 244 | "sync": false 245 | }, 246 | { 247 | "__type__": "cc.Node", 248 | "_name": "cover", 249 | "_objFlags": 0, 250 | "_parent": { 251 | "__id__": 1 252 | }, 253 | "_children": [], 254 | "_tag": -1, 255 | "_active": true, 256 | "_components": [ 257 | { 258 | "__id__": 9 259 | } 260 | ], 261 | "_prefab": { 262 | "__id__": 10 263 | }, 264 | "_id": "", 265 | "_opacity": 200, 266 | "_color": { 267 | "__type__": "cc.Color", 268 | "r": 255, 269 | "g": 255, 270 | "b": 255, 271 | "a": 255 272 | }, 273 | "_cascadeOpacityEnabled": true, 274 | "_anchorPoint": { 275 | "__type__": "cc.Vec2", 276 | "x": 0.5, 277 | "y": 0.5 278 | }, 279 | "_contentSize": { 280 | "__type__": "cc.Size", 281 | "width": 80, 282 | "height": 30 283 | }, 284 | "_rotationX": 0, 285 | "_rotationY": 0, 286 | "_scaleX": 1, 287 | "_scaleY": 1, 288 | "_position": { 289 | "__type__": "cc.Vec2", 290 | "x": -300, 291 | "y": -30 292 | }, 293 | "_skewX": 0, 294 | "_skewY": 0, 295 | "_localZOrder": 0, 296 | "_globalZOrder": 0, 297 | "_opacityModifyRGB": false, 298 | "groupIndex": 0 299 | }, 300 | { 301 | "__type__": "cc.Sprite", 302 | "_name": "", 303 | "_objFlags": 0, 304 | "node": { 305 | "__id__": 8 306 | }, 307 | "_enabled": true, 308 | "_spriteFrame": { 309 | "__uuid__": "a23235d1-15db-4b95-8439-a2e005bfff91" 310 | }, 311 | "_type": 0, 312 | "_sizeMode": 0, 313 | "_fillType": 0, 314 | "_fillCenter": { 315 | "__type__": "cc.Vec2", 316 | "x": 0, 317 | "y": 0 318 | }, 319 | "_fillStart": 0, 320 | "_fillRange": 0, 321 | "_isTrimmedMode": true, 322 | "_srcBlendFactor": 770, 323 | "_dstBlendFactor": 771, 324 | "_atlas": null 325 | }, 326 | { 327 | "__type__": "cc.PrefabInfo", 328 | "root": { 329 | "__id__": 1 330 | }, 331 | "asset": { 332 | "__uuid__": "2afd8bdd-44c8-4c08-84f4-c92af0f3bf78" 333 | }, 334 | "fileId": "ddnCyzjIZPEo1v1mTGKee5", 335 | "sync": false 336 | }, 337 | { 338 | "__type__": "cc.Node", 339 | "_name": "name", 340 | "_objFlags": 0, 341 | "_parent": { 342 | "__id__": 1 343 | }, 344 | "_children": [], 345 | "_tag": -1, 346 | "_active": true, 347 | "_components": [ 348 | { 349 | "__id__": 12 350 | } 351 | ], 352 | "_prefab": { 353 | "__id__": 13 354 | }, 355 | "_id": "", 356 | "_opacity": 255, 357 | "_color": { 358 | "__type__": "cc.Color", 359 | "r": 0, 360 | "g": 0, 361 | "b": 0, 362 | "a": 255 363 | }, 364 | "_cascadeOpacityEnabled": true, 365 | "_anchorPoint": { 366 | "__type__": "cc.Vec2", 367 | "x": 0.5, 368 | "y": 0.5 369 | }, 370 | "_contentSize": { 371 | "__type__": "cc.Size", 372 | "width": 72, 373 | "height": 20 374 | }, 375 | "_rotationX": 0, 376 | "_rotationY": 0, 377 | "_scaleX": 1, 378 | "_scaleY": 1, 379 | "_position": { 380 | "__type__": "cc.Vec2", 381 | "x": -300, 382 | "y": -31 383 | }, 384 | "_skewX": 0, 385 | "_skewY": 0, 386 | "_localZOrder": 0, 387 | "_globalZOrder": 0, 388 | "_opacityModifyRGB": false, 389 | "groupIndex": 0 390 | }, 391 | { 392 | "__type__": "cc.Label", 393 | "_name": "", 394 | "_objFlags": 0, 395 | "node": { 396 | "__id__": 11 397 | }, 398 | "_enabled": true, 399 | "_useOriginalSize": false, 400 | "_actualFontSize": 18, 401 | "_fontSize": 18, 402 | "_lineHeight": 20, 403 | "_enableWrapText": true, 404 | "_N$file": null, 405 | "_isSystemFontUsed": true, 406 | "_spacingX": 0, 407 | "_N$string": "斤斤计较", 408 | "_N$horizontalAlign": 1, 409 | "_N$verticalAlign": 1, 410 | "_N$fontFamily": "Arial", 411 | "_N$overflow": 0 412 | }, 413 | { 414 | "__type__": "cc.PrefabInfo", 415 | "root": { 416 | "__id__": 1 417 | }, 418 | "asset": { 419 | "__uuid__": "2afd8bdd-44c8-4c08-84f4-c92af0f3bf78" 420 | }, 421 | "fileId": "5flcJJ2rtJ6bjU+LjpFbKx", 422 | "sync": false 423 | }, 424 | { 425 | "__type__": "cc.Node", 426 | "_name": "msgBox", 427 | "_objFlags": 0, 428 | "_parent": { 429 | "__id__": 1 430 | }, 431 | "_children": [ 432 | { 433 | "__id__": 15 434 | } 435 | ], 436 | "_tag": -1, 437 | "_active": true, 438 | "_components": [ 439 | { 440 | "__id__": 18 441 | }, 442 | { 443 | "__id__": 19 444 | } 445 | ], 446 | "_prefab": { 447 | "__id__": 20 448 | }, 449 | "_id": "", 450 | "_opacity": 255, 451 | "_color": { 452 | "__type__": "cc.Color", 453 | "r": 255, 454 | "g": 255, 455 | "b": 255, 456 | "a": 255 457 | }, 458 | "_cascadeOpacityEnabled": true, 459 | "_anchorPoint": { 460 | "__type__": "cc.Vec2", 461 | "x": 0.43, 462 | "y": 0.5 463 | }, 464 | "_contentSize": { 465 | "__type__": "cc.Size", 466 | "width": 160, 467 | "height": 65 468 | }, 469 | "_rotationX": 0, 470 | "_rotationY": 0, 471 | "_scaleX": 1, 472 | "_scaleY": 1, 473 | "_position": { 474 | "__type__": "cc.Vec2", 475 | "x": -180, 476 | "y": 0 477 | }, 478 | "_skewX": 0, 479 | "_skewY": 0, 480 | "_localZOrder": 0, 481 | "_globalZOrder": 0, 482 | "_opacityModifyRGB": false, 483 | "groupIndex": 0 484 | }, 485 | { 486 | "__type__": "cc.Node", 487 | "_name": "msg", 488 | "_objFlags": 0, 489 | "_parent": { 490 | "__id__": 14 491 | }, 492 | "_children": [], 493 | "_tag": -1, 494 | "_active": true, 495 | "_components": [ 496 | { 497 | "__id__": 16 498 | } 499 | ], 500 | "_prefab": { 501 | "__id__": 17 502 | }, 503 | "_id": "", 504 | "_opacity": 255, 505 | "_color": { 506 | "__type__": "cc.Color", 507 | "r": 0, 508 | "g": 0, 509 | "b": 0, 510 | "a": 255 511 | }, 512 | "_cascadeOpacityEnabled": true, 513 | "_anchorPoint": { 514 | "__type__": "cc.Vec2", 515 | "x": 0, 516 | "y": 0.5 517 | }, 518 | "_contentSize": { 519 | "__type__": "cc.Size", 520 | "width": 100, 521 | "height": 25 522 | }, 523 | "_rotationX": 0, 524 | "_rotationY": 0, 525 | "_scaleX": 1, 526 | "_scaleY": 1, 527 | "_position": { 528 | "__type__": "cc.Vec2", 529 | "x": -39, 530 | "y": 0 531 | }, 532 | "_skewX": 0, 533 | "_skewY": 0, 534 | "_localZOrder": 0, 535 | "_globalZOrder": 0, 536 | "_opacityModifyRGB": false, 537 | "groupIndex": 0 538 | }, 539 | { 540 | "__type__": "cc.Label", 541 | "_name": "", 542 | "_objFlags": 0, 543 | "node": { 544 | "__id__": 15 545 | }, 546 | "_enabled": true, 547 | "_useOriginalSize": false, 548 | "_actualFontSize": 20, 549 | "_fontSize": 20, 550 | "_lineHeight": 25, 551 | "_enableWrapText": true, 552 | "_N$file": null, 553 | "_isSystemFontUsed": true, 554 | "_spacingX": 0, 555 | "_N$string": "这是一句话", 556 | "_N$horizontalAlign": 1, 557 | "_N$verticalAlign": 1, 558 | "_N$fontFamily": "Arial", 559 | "_N$overflow": 0 560 | }, 561 | { 562 | "__type__": "cc.PrefabInfo", 563 | "root": { 564 | "__id__": 1 565 | }, 566 | "asset": { 567 | "__uuid__": "2afd8bdd-44c8-4c08-84f4-c92af0f3bf78" 568 | }, 569 | "fileId": "49HSnvyyRLtrLaTU3UsDyQ", 570 | "sync": false 571 | }, 572 | { 573 | "__type__": "cc.Sprite", 574 | "_name": "", 575 | "_objFlags": 0, 576 | "node": { 577 | "__id__": 14 578 | }, 579 | "_enabled": true, 580 | "_spriteFrame": { 581 | "__uuid__": "8455a556-e16c-4400-8f84-798e952f8168" 582 | }, 583 | "_type": 1, 584 | "_sizeMode": 0, 585 | "_fillType": 0, 586 | "_fillCenter": { 587 | "__type__": "cc.Vec2", 588 | "x": 0, 589 | "y": 0 590 | }, 591 | "_fillStart": 0, 592 | "_fillRange": 0, 593 | "_isTrimmedMode": true, 594 | "_srcBlendFactor": 770, 595 | "_dstBlendFactor": 771, 596 | "_atlas": null 597 | }, 598 | { 599 | "__type__": "cc.Layout", 600 | "_name": "", 601 | "_objFlags": 0, 602 | "node": { 603 | "__id__": 14 604 | }, 605 | "_enabled": true, 606 | "_layoutSize": { 607 | "__type__": "cc.Size", 608 | "width": 160, 609 | "height": 65 610 | }, 611 | "_resize": 1, 612 | "_N$layoutType": 0, 613 | "_N$padding": 0, 614 | "_N$cellSize": { 615 | "__type__": "cc.Size", 616 | "width": 40, 617 | "height": 40 618 | }, 619 | "_N$startAxis": 0, 620 | "_N$paddingLeft": 30, 621 | "_N$paddingRight": 30, 622 | "_N$paddingTop": 20, 623 | "_N$paddingBottom": 20, 624 | "_N$spacingX": 0, 625 | "_N$spacingY": 0, 626 | "_N$verticalDirection": 1, 627 | "_N$horizontalDirection": 0 628 | }, 629 | { 630 | "__type__": "cc.PrefabInfo", 631 | "root": { 632 | "__id__": 1 633 | }, 634 | "asset": { 635 | "__uuid__": "2afd8bdd-44c8-4c08-84f4-c92af0f3bf78" 636 | }, 637 | "fileId": "e5XuDqCMVCEaXLJzk9U5Z6", 638 | "sync": false 639 | }, 640 | { 641 | "__type__": "cc.PrefabInfo", 642 | "root": { 643 | "__id__": 1 644 | }, 645 | "asset": { 646 | "__uuid__": "2afd8bdd-44c8-4c08-84f4-c92af0f3bf78" 647 | }, 648 | "fileId": "7d0qUSub1LlqMaA0s/dADI", 649 | "sync": false 650 | } 651 | ] -------------------------------------------------------------------------------- /chat_client/assets/prefab/OtherMsg.prefab.meta: -------------------------------------------------------------------------------- 1 | { 2 | "ver": "1.0.0", 3 | "uuid": "2afd8bdd-44c8-4c08-84f4-c92af0f3bf78", 4 | "asyncLoadAssets": false, 5 | "subMetas": {} 6 | } -------------------------------------------------------------------------------- /chat_client/assets/prefab/SelfMsg.prefab: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "__type__": "cc.Prefab", 4 | "_name": "", 5 | "_objFlags": 0, 6 | "_rawFiles": null, 7 | "data": { 8 | "__id__": 1 9 | } 10 | }, 11 | { 12 | "__type__": "cc.Node", 13 | "_name": "SelfMsg", 14 | "_objFlags": 0, 15 | "_parent": null, 16 | "_children": [ 17 | { 18 | "__id__": 2 19 | }, 20 | { 21 | "__id__": 8 22 | }, 23 | { 24 | "__id__": 11 25 | }, 26 | { 27 | "__id__": 14 28 | } 29 | ], 30 | "_tag": -1, 31 | "_active": true, 32 | "_components": [], 33 | "_prefab": { 34 | "__id__": 21 35 | }, 36 | "_id": "", 37 | "_opacity": 255, 38 | "_color": { 39 | "__type__": "cc.Color", 40 | "r": 255, 41 | "g": 255, 42 | "b": 255, 43 | "a": 255 44 | }, 45 | "_cascadeOpacityEnabled": true, 46 | "_anchorPoint": { 47 | "__type__": "cc.Vec2", 48 | "x": 0.5, 49 | "y": 0.5 50 | }, 51 | "_contentSize": { 52 | "__type__": "cc.Size", 53 | "width": 700, 54 | "height": 100 55 | }, 56 | "_rotationX": 0, 57 | "_rotationY": 0, 58 | "_scaleX": 1, 59 | "_scaleY": 1, 60 | "_position": { 61 | "__type__": "cc.Vec2", 62 | "x": 0, 63 | "y": -50 64 | }, 65 | "_skewX": 0, 66 | "_skewY": 0, 67 | "_localZOrder": 0, 68 | "_globalZOrder": 0, 69 | "_opacityModifyRGB": false, 70 | "groupIndex": 0 71 | }, 72 | { 73 | "__type__": "cc.Node", 74 | "_name": "imgMask", 75 | "_objFlags": 0, 76 | "_parent": { 77 | "__id__": 1 78 | }, 79 | "_children": [ 80 | { 81 | "__id__": 3 82 | } 83 | ], 84 | "_tag": -1, 85 | "_active": true, 86 | "_components": [ 87 | { 88 | "__id__": 6 89 | } 90 | ], 91 | "_prefab": { 92 | "__id__": 7 93 | }, 94 | "_id": "", 95 | "_opacity": 255, 96 | "_color": { 97 | "__type__": "cc.Color", 98 | "r": 255, 99 | "g": 255, 100 | "b": 255, 101 | "a": 255 102 | }, 103 | "_cascadeOpacityEnabled": true, 104 | "_anchorPoint": { 105 | "__type__": "cc.Vec2", 106 | "x": 0.5, 107 | "y": 0.5 108 | }, 109 | "_contentSize": { 110 | "__type__": "cc.Size", 111 | "width": 80, 112 | "height": 80 113 | }, 114 | "_rotationX": 0, 115 | "_rotationY": 0, 116 | "_scaleX": 1, 117 | "_scaleY": 1, 118 | "_position": { 119 | "__type__": "cc.Vec2", 120 | "x": 299, 121 | "y": 0 122 | }, 123 | "_skewX": 0, 124 | "_skewY": 0, 125 | "_localZOrder": 0, 126 | "_globalZOrder": 0, 127 | "_opacityModifyRGB": false, 128 | "groupIndex": 0 129 | }, 130 | { 131 | "__type__": "cc.Node", 132 | "_name": "img", 133 | "_objFlags": 0, 134 | "_parent": { 135 | "__id__": 2 136 | }, 137 | "_children": [], 138 | "_tag": -1, 139 | "_active": true, 140 | "_components": [ 141 | { 142 | "__id__": 4 143 | } 144 | ], 145 | "_prefab": { 146 | "__id__": 5 147 | }, 148 | "_id": "", 149 | "_opacity": 255, 150 | "_color": { 151 | "__type__": "cc.Color", 152 | "r": 255, 153 | "g": 255, 154 | "b": 255, 155 | "a": 255 156 | }, 157 | "_cascadeOpacityEnabled": true, 158 | "_anchorPoint": { 159 | "__type__": "cc.Vec2", 160 | "x": 0.5, 161 | "y": 0.5 162 | }, 163 | "_contentSize": { 164 | "__type__": "cc.Size", 165 | "width": 80, 166 | "height": 80 167 | }, 168 | "_rotationX": 0, 169 | "_rotationY": 0, 170 | "_scaleX": 1, 171 | "_scaleY": 1, 172 | "_position": { 173 | "__type__": "cc.Vec2", 174 | "x": 0, 175 | "y": 0 176 | }, 177 | "_skewX": 0, 178 | "_skewY": 0, 179 | "_localZOrder": 0, 180 | "_globalZOrder": 0, 181 | "_opacityModifyRGB": false, 182 | "groupIndex": 0 183 | }, 184 | { 185 | "__type__": "cc.Sprite", 186 | "_name": "", 187 | "_objFlags": 0, 188 | "node": { 189 | "__id__": 3 190 | }, 191 | "_enabled": true, 192 | "_spriteFrame": { 193 | "__uuid__": "b29db6a7-7857-4fa6-a5ff-e0f3c26069ac" 194 | }, 195 | "_type": 0, 196 | "_sizeMode": 0, 197 | "_fillType": 0, 198 | "_fillCenter": { 199 | "__type__": "cc.Vec2", 200 | "x": 0, 201 | "y": 0 202 | }, 203 | "_fillStart": 0, 204 | "_fillRange": 0, 205 | "_isTrimmedMode": true, 206 | "_srcBlendFactor": 770, 207 | "_dstBlendFactor": 771, 208 | "_atlas": null 209 | }, 210 | { 211 | "__type__": "cc.PrefabInfo", 212 | "root": { 213 | "__id__": 1 214 | }, 215 | "asset": { 216 | "__uuid__": "2608a079-0dfa-4728-9a9a-a3d77757572a" 217 | }, 218 | "fileId": "94RsvK4aBBdrxSz5ebI0dO", 219 | "sync": false 220 | }, 221 | { 222 | "__type__": "cc.Mask", 223 | "_name": "", 224 | "_objFlags": 0, 225 | "node": { 226 | "__id__": 2 227 | }, 228 | "_enabled": true, 229 | "_type": 1, 230 | "_segements": 64, 231 | "_N$spriteFrame": null, 232 | "_N$alphaThreshold": 1, 233 | "_N$inverted": false 234 | }, 235 | { 236 | "__type__": "cc.PrefabInfo", 237 | "root": { 238 | "__id__": 1 239 | }, 240 | "asset": { 241 | "__uuid__": "2608a079-0dfa-4728-9a9a-a3d77757572a" 242 | }, 243 | "fileId": "29c61q0ZdP3pf1EbeZ4f5+", 244 | "sync": false 245 | }, 246 | { 247 | "__type__": "cc.Node", 248 | "_name": "cover", 249 | "_objFlags": 0, 250 | "_parent": { 251 | "__id__": 1 252 | }, 253 | "_children": [], 254 | "_tag": -1, 255 | "_active": true, 256 | "_components": [ 257 | { 258 | "__id__": 9 259 | } 260 | ], 261 | "_prefab": { 262 | "__id__": 10 263 | }, 264 | "_id": "", 265 | "_opacity": 200, 266 | "_color": { 267 | "__type__": "cc.Color", 268 | "r": 255, 269 | "g": 255, 270 | "b": 255, 271 | "a": 255 272 | }, 273 | "_cascadeOpacityEnabled": true, 274 | "_anchorPoint": { 275 | "__type__": "cc.Vec2", 276 | "x": 0.5, 277 | "y": 0.5 278 | }, 279 | "_contentSize": { 280 | "__type__": "cc.Size", 281 | "width": 80, 282 | "height": 30 283 | }, 284 | "_rotationX": 0, 285 | "_rotationY": 0, 286 | "_scaleX": 1, 287 | "_scaleY": 1, 288 | "_position": { 289 | "__type__": "cc.Vec2", 290 | "x": 300, 291 | "y": -30 292 | }, 293 | "_skewX": 0, 294 | "_skewY": 0, 295 | "_localZOrder": 0, 296 | "_globalZOrder": 0, 297 | "_opacityModifyRGB": false, 298 | "groupIndex": 0 299 | }, 300 | { 301 | "__type__": "cc.Sprite", 302 | "_name": "", 303 | "_objFlags": 0, 304 | "node": { 305 | "__id__": 8 306 | }, 307 | "_enabled": true, 308 | "_spriteFrame": { 309 | "__uuid__": "a23235d1-15db-4b95-8439-a2e005bfff91" 310 | }, 311 | "_type": 0, 312 | "_sizeMode": 0, 313 | "_fillType": 0, 314 | "_fillCenter": { 315 | "__type__": "cc.Vec2", 316 | "x": 0, 317 | "y": 0 318 | }, 319 | "_fillStart": 0, 320 | "_fillRange": 0, 321 | "_isTrimmedMode": true, 322 | "_srcBlendFactor": 770, 323 | "_dstBlendFactor": 771, 324 | "_atlas": null 325 | }, 326 | { 327 | "__type__": "cc.PrefabInfo", 328 | "root": { 329 | "__id__": 1 330 | }, 331 | "asset": { 332 | "__uuid__": "2608a079-0dfa-4728-9a9a-a3d77757572a" 333 | }, 334 | "fileId": "5ajKdg2bRH+bEiW+GeU27W", 335 | "sync": false 336 | }, 337 | { 338 | "__type__": "cc.Node", 339 | "_name": "name", 340 | "_objFlags": 0, 341 | "_parent": { 342 | "__id__": 1 343 | }, 344 | "_children": [], 345 | "_tag": -1, 346 | "_active": true, 347 | "_components": [ 348 | { 349 | "__id__": 12 350 | } 351 | ], 352 | "_prefab": { 353 | "__id__": 13 354 | }, 355 | "_id": "", 356 | "_opacity": 255, 357 | "_color": { 358 | "__type__": "cc.Color", 359 | "r": 0, 360 | "g": 0, 361 | "b": 0, 362 | "a": 255 363 | }, 364 | "_cascadeOpacityEnabled": true, 365 | "_anchorPoint": { 366 | "__type__": "cc.Vec2", 367 | "x": 0.5, 368 | "y": 0.5 369 | }, 370 | "_contentSize": { 371 | "__type__": "cc.Size", 372 | "width": 72, 373 | "height": 20 374 | }, 375 | "_rotationX": 0, 376 | "_rotationY": 0, 377 | "_scaleX": 1, 378 | "_scaleY": 1, 379 | "_position": { 380 | "__type__": "cc.Vec2", 381 | "x": 300, 382 | "y": -31 383 | }, 384 | "_skewX": 0, 385 | "_skewY": 0, 386 | "_localZOrder": 0, 387 | "_globalZOrder": 0, 388 | "_opacityModifyRGB": false, 389 | "groupIndex": 0 390 | }, 391 | { 392 | "__type__": "cc.Label", 393 | "_name": "", 394 | "_objFlags": 0, 395 | "node": { 396 | "__id__": 11 397 | }, 398 | "_enabled": true, 399 | "_useOriginalSize": false, 400 | "_actualFontSize": 18, 401 | "_fontSize": 18, 402 | "_lineHeight": 20, 403 | "_enableWrapText": true, 404 | "_N$file": null, 405 | "_isSystemFontUsed": true, 406 | "_spacingX": 0, 407 | "_N$string": "斤斤计较", 408 | "_N$horizontalAlign": 1, 409 | "_N$verticalAlign": 1, 410 | "_N$fontFamily": "Arial", 411 | "_N$overflow": 0 412 | }, 413 | { 414 | "__type__": "cc.PrefabInfo", 415 | "root": { 416 | "__id__": 1 417 | }, 418 | "asset": { 419 | "__uuid__": "2608a079-0dfa-4728-9a9a-a3d77757572a" 420 | }, 421 | "fileId": "3chD64sQFN7qQs+p4+3UGs", 422 | "sync": false 423 | }, 424 | { 425 | "__type__": "cc.Node", 426 | "_name": "msgBox", 427 | "_objFlags": 0, 428 | "_parent": { 429 | "__id__": 1 430 | }, 431 | "_children": [ 432 | { 433 | "__id__": 15 434 | } 435 | ], 436 | "_tag": -1, 437 | "_active": true, 438 | "_components": [ 439 | { 440 | "__id__": 18 441 | }, 442 | { 443 | "__id__": 19 444 | } 445 | ], 446 | "_prefab": { 447 | "__id__": 20 448 | }, 449 | "_id": "", 450 | "_opacity": 255, 451 | "_color": { 452 | "__type__": "cc.Color", 453 | "r": 255, 454 | "g": 255, 455 | "b": 255, 456 | "a": 255 457 | }, 458 | "_cascadeOpacityEnabled": true, 459 | "_anchorPoint": { 460 | "__type__": "cc.Vec2", 461 | "x": -0.94, 462 | "y": 0.5 463 | }, 464 | "_contentSize": { 465 | "__type__": "cc.Size", 466 | "width": 220, 467 | "height": 65 468 | }, 469 | "_rotationX": 0, 470 | "_rotationY": 0, 471 | "_scaleX": 1, 472 | "_scaleY": 1, 473 | "_position": { 474 | "__type__": "cc.Vec2", 475 | "x": -180, 476 | "y": 0 477 | }, 478 | "_skewX": 0, 479 | "_skewY": 0, 480 | "_localZOrder": 0, 481 | "_globalZOrder": 0, 482 | "_opacityModifyRGB": false, 483 | "groupIndex": 0 484 | }, 485 | { 486 | "__type__": "cc.Node", 487 | "_name": "msg", 488 | "_objFlags": 0, 489 | "_parent": { 490 | "__id__": 14 491 | }, 492 | "_children": [], 493 | "_tag": -1, 494 | "_active": true, 495 | "_components": [ 496 | { 497 | "__id__": 16 498 | } 499 | ], 500 | "_prefab": { 501 | "__id__": 17 502 | }, 503 | "_id": "", 504 | "_opacity": 255, 505 | "_color": { 506 | "__type__": "cc.Color", 507 | "r": 0, 508 | "g": 0, 509 | "b": 0, 510 | "a": 255 511 | }, 512 | "_cascadeOpacityEnabled": true, 513 | "_anchorPoint": { 514 | "__type__": "cc.Vec2", 515 | "x": 1, 516 | "y": 0.5 517 | }, 518 | "_contentSize": { 519 | "__type__": "cc.Size", 520 | "width": 160, 521 | "height": 25 522 | }, 523 | "_rotationX": 0, 524 | "_rotationY": 0, 525 | "_scaleX": 1, 526 | "_scaleY": 1, 527 | "_position": { 528 | "__type__": "cc.Vec2", 529 | "x": 396, 530 | "y": 0 531 | }, 532 | "_skewX": 0, 533 | "_skewY": 0, 534 | "_localZOrder": 0, 535 | "_globalZOrder": 0, 536 | "_opacityModifyRGB": false, 537 | "groupIndex": 0 538 | }, 539 | { 540 | "__type__": "cc.Label", 541 | "_name": "", 542 | "_objFlags": 0, 543 | "node": { 544 | "__id__": 15 545 | }, 546 | "_enabled": true, 547 | "_useOriginalSize": false, 548 | "_actualFontSize": 20, 549 | "_fontSize": 20, 550 | "_lineHeight": 25, 551 | "_enableWrapText": true, 552 | "_N$file": null, 553 | "_isSystemFontUsed": true, 554 | "_spacingX": 0, 555 | "_N$string": "你好这是一段文字", 556 | "_N$horizontalAlign": 1, 557 | "_N$verticalAlign": 1, 558 | "_N$fontFamily": "Arial", 559 | "_N$overflow": 0 560 | }, 561 | { 562 | "__type__": "cc.PrefabInfo", 563 | "root": { 564 | "__id__": 1 565 | }, 566 | "asset": { 567 | "__uuid__": "2608a079-0dfa-4728-9a9a-a3d77757572a" 568 | }, 569 | "fileId": "5cJNVRqgBERLyj1F34ls7b", 570 | "sync": false 571 | }, 572 | { 573 | "__type__": "cc.Sprite", 574 | "_name": "", 575 | "_objFlags": 0, 576 | "node": { 577 | "__id__": 14 578 | }, 579 | "_enabled": true, 580 | "_spriteFrame": { 581 | "__uuid__": "88245198-d644-45c6-8157-9730bcbfac7b" 582 | }, 583 | "_type": 1, 584 | "_sizeMode": 0, 585 | "_fillType": 0, 586 | "_fillCenter": { 587 | "__type__": "cc.Vec2", 588 | "x": 0, 589 | "y": 0 590 | }, 591 | "_fillStart": 0, 592 | "_fillRange": 0, 593 | "_isTrimmedMode": true, 594 | "_srcBlendFactor": 770, 595 | "_dstBlendFactor": 771, 596 | "_atlas": null 597 | }, 598 | { 599 | "__type__": "cc.Layout", 600 | "_name": "", 601 | "_objFlags": 0, 602 | "node": { 603 | "__id__": 14 604 | }, 605 | "_enabled": true, 606 | "_layoutSize": { 607 | "__type__": "cc.Size", 608 | "width": 220, 609 | "height": 65 610 | }, 611 | "_resize": 1, 612 | "_N$layoutType": 0, 613 | "_N$padding": 0, 614 | "_N$cellSize": { 615 | "__type__": "cc.Size", 616 | "width": 40, 617 | "height": 40 618 | }, 619 | "_N$startAxis": 0, 620 | "_N$paddingLeft": 30, 621 | "_N$paddingRight": 30, 622 | "_N$paddingTop": 20, 623 | "_N$paddingBottom": 20, 624 | "_N$spacingX": 0, 625 | "_N$spacingY": 0, 626 | "_N$verticalDirection": 1, 627 | "_N$horizontalDirection": 0 628 | }, 629 | { 630 | "__type__": "cc.PrefabInfo", 631 | "root": { 632 | "__id__": 1 633 | }, 634 | "asset": { 635 | "__uuid__": "2608a079-0dfa-4728-9a9a-a3d77757572a" 636 | }, 637 | "fileId": "6cKAHLCYJNQL9n4QMceCSK", 638 | "sync": false 639 | }, 640 | { 641 | "__type__": "cc.PrefabInfo", 642 | "root": { 643 | "__id__": 1 644 | }, 645 | "asset": { 646 | "__uuid__": "2608a079-0dfa-4728-9a9a-a3d77757572a" 647 | }, 648 | "fileId": "23IEQOK3JPVJsUlaN0IDe6", 649 | "sync": false 650 | } 651 | ] -------------------------------------------------------------------------------- /chat_client/assets/prefab/SelfMsg.prefab.meta: -------------------------------------------------------------------------------- 1 | { 2 | "ver": "1.0.0", 3 | "uuid": "2608a079-0dfa-4728-9a9a-a3d77757572a", 4 | "asyncLoadAssets": false, 5 | "subMetas": {} 6 | } -------------------------------------------------------------------------------- /chat_client/assets/prefab/userNode.prefab: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "__type__": "cc.Prefab", 4 | "_name": "", 5 | "_objFlags": 0, 6 | "_rawFiles": null, 7 | "data": { 8 | "__id__": 1 9 | } 10 | }, 11 | { 12 | "__type__": "cc.Node", 13 | "_name": "userNode", 14 | "_objFlags": 0, 15 | "_parent": null, 16 | "_children": [ 17 | { 18 | "__id__": 2 19 | }, 20 | { 21 | "__id__": 5 22 | }, 23 | { 24 | "__id__": 8 25 | } 26 | ], 27 | "_tag": -1, 28 | "_active": true, 29 | "_components": [ 30 | { 31 | "__id__": 11 32 | }, 33 | { 34 | "__id__": 12 35 | } 36 | ], 37 | "_prefab": { 38 | "__id__": 13 39 | }, 40 | "_id": "", 41 | "_opacity": 255, 42 | "_color": { 43 | "__type__": "cc.Color", 44 | "r": 255, 45 | "g": 255, 46 | "b": 255, 47 | "a": 255 48 | }, 49 | "_cascadeOpacityEnabled": true, 50 | "_anchorPoint": { 51 | "__type__": "cc.Vec2", 52 | "x": 0.5, 53 | "y": 0.5 54 | }, 55 | "_contentSize": { 56 | "__type__": "cc.Size", 57 | "width": 145, 58 | "height": 50 59 | }, 60 | "_rotationX": 0, 61 | "_rotationY": 0, 62 | "_scaleX": 1, 63 | "_scaleY": 1, 64 | "_position": { 65 | "__type__": "cc.Vec2", 66 | "x": 0, 67 | "y": -25 68 | }, 69 | "_skewX": 0, 70 | "_skewY": 0, 71 | "_localZOrder": 0, 72 | "_globalZOrder": 0, 73 | "_opacityModifyRGB": false, 74 | "groupIndex": 0 75 | }, 76 | { 77 | "__type__": "cc.Node", 78 | "_name": "img", 79 | "_objFlags": 0, 80 | "_parent": { 81 | "__id__": 1 82 | }, 83 | "_children": [], 84 | "_tag": -1, 85 | "_active": true, 86 | "_components": [ 87 | { 88 | "__id__": 3 89 | } 90 | ], 91 | "_prefab": { 92 | "__id__": 4 93 | }, 94 | "_id": "", 95 | "_opacity": 255, 96 | "_color": { 97 | "__type__": "cc.Color", 98 | "r": 255, 99 | "g": 255, 100 | "b": 255, 101 | "a": 255 102 | }, 103 | "_cascadeOpacityEnabled": true, 104 | "_anchorPoint": { 105 | "__type__": "cc.Vec2", 106 | "x": 0.5, 107 | "y": 0.5 108 | }, 109 | "_contentSize": { 110 | "__type__": "cc.Size", 111 | "width": 40, 112 | "height": 40 113 | }, 114 | "_rotationX": 0, 115 | "_rotationY": 0, 116 | "_scaleX": 1, 117 | "_scaleY": 1, 118 | "_position": { 119 | "__type__": "cc.Vec2", 120 | "x": -47.1, 121 | "y": 0 122 | }, 123 | "_skewX": 0, 124 | "_skewY": 0, 125 | "_localZOrder": 0, 126 | "_globalZOrder": 0, 127 | "_opacityModifyRGB": false, 128 | "groupIndex": 0 129 | }, 130 | { 131 | "__type__": "cc.Sprite", 132 | "_name": "", 133 | "_objFlags": 0, 134 | "node": { 135 | "__id__": 2 136 | }, 137 | "_enabled": true, 138 | "_spriteFrame": { 139 | "__uuid__": "b29db6a7-7857-4fa6-a5ff-e0f3c26069ac" 140 | }, 141 | "_type": 0, 142 | "_sizeMode": 0, 143 | "_fillType": 0, 144 | "_fillCenter": { 145 | "__type__": "cc.Vec2", 146 | "x": 0, 147 | "y": 0 148 | }, 149 | "_fillStart": 0, 150 | "_fillRange": 0, 151 | "_isTrimmedMode": true, 152 | "_srcBlendFactor": 770, 153 | "_dstBlendFactor": 771, 154 | "_atlas": null 155 | }, 156 | { 157 | "__type__": "cc.PrefabInfo", 158 | "root": { 159 | "__id__": 1 160 | }, 161 | "asset": { 162 | "__uuid__": "6f2e9698-ea00-46dc-9a09-dda3c94ccf14" 163 | }, 164 | "fileId": "29LR6nfGBHc6oiZ/+kiwGm", 165 | "sync": false 166 | }, 167 | { 168 | "__type__": "cc.Node", 169 | "_name": "name", 170 | "_objFlags": 0, 171 | "_parent": { 172 | "__id__": 1 173 | }, 174 | "_children": [], 175 | "_tag": -1, 176 | "_active": true, 177 | "_components": [ 178 | { 179 | "__id__": 6 180 | } 181 | ], 182 | "_prefab": { 183 | "__id__": 7 184 | }, 185 | "_id": "", 186 | "_opacity": 255, 187 | "_color": { 188 | "__type__": "cc.Color", 189 | "r": 0, 190 | "g": 0, 191 | "b": 0, 192 | "a": 255 193 | }, 194 | "_cascadeOpacityEnabled": true, 195 | "_anchorPoint": { 196 | "__type__": "cc.Vec2", 197 | "x": 0, 198 | "y": 0.5 199 | }, 200 | "_contentSize": { 201 | "__type__": "cc.Size", 202 | "width": 64, 203 | "height": 20 204 | }, 205 | "_rotationX": 0, 206 | "_rotationY": 0, 207 | "_scaleX": 1, 208 | "_scaleY": 1, 209 | "_position": { 210 | "__type__": "cc.Vec2", 211 | "x": -25.4, 212 | "y": 10 213 | }, 214 | "_skewX": 0, 215 | "_skewY": 0, 216 | "_localZOrder": 0, 217 | "_globalZOrder": 0, 218 | "_opacityModifyRGB": false, 219 | "groupIndex": 0 220 | }, 221 | { 222 | "__type__": "cc.Label", 223 | "_name": "", 224 | "_objFlags": 0, 225 | "node": { 226 | "__id__": 5 227 | }, 228 | "_enabled": true, 229 | "_useOriginalSize": false, 230 | "_actualFontSize": 16, 231 | "_fontSize": 16, 232 | "_lineHeight": 20, 233 | "_enableWrapText": true, 234 | "_N$file": null, 235 | "_isSystemFontUsed": true, 236 | "_spacingX": 0, 237 | "_N$string": "斤斤计较", 238 | "_N$horizontalAlign": 1, 239 | "_N$verticalAlign": 1, 240 | "_N$fontFamily": "Arial", 241 | "_N$overflow": 0 242 | }, 243 | { 244 | "__type__": "cc.PrefabInfo", 245 | "root": { 246 | "__id__": 1 247 | }, 248 | "asset": { 249 | "__uuid__": "6f2e9698-ea00-46dc-9a09-dda3c94ccf14" 250 | }, 251 | "fileId": "4e7+DqZHBFBK3QWk+Fc4pi", 252 | "sync": false 253 | }, 254 | { 255 | "__type__": "cc.Node", 256 | "_name": "lv", 257 | "_objFlags": 0, 258 | "_parent": { 259 | "__id__": 1 260 | }, 261 | "_children": [], 262 | "_tag": -1, 263 | "_active": true, 264 | "_components": [ 265 | { 266 | "__id__": 9 267 | } 268 | ], 269 | "_prefab": { 270 | "__id__": 10 271 | }, 272 | "_id": "", 273 | "_opacity": 255, 274 | "_color": { 275 | "__type__": "cc.Color", 276 | "r": 255, 277 | "g": 163, 278 | "b": 0, 279 | "a": 255 280 | }, 281 | "_cascadeOpacityEnabled": true, 282 | "_anchorPoint": { 283 | "__type__": "cc.Vec2", 284 | "x": 0, 285 | "y": 0.5 286 | }, 287 | "_contentSize": { 288 | "__type__": "cc.Size", 289 | "width": 22.11, 290 | "height": 20 291 | }, 292 | "_rotationX": 0, 293 | "_rotationY": 0, 294 | "_scaleX": 1, 295 | "_scaleY": 1, 296 | "_position": { 297 | "__type__": "cc.Vec2", 298 | "x": -24.4, 299 | "y": -10.8 300 | }, 301 | "_skewX": 0, 302 | "_skewY": 0, 303 | "_localZOrder": 0, 304 | "_globalZOrder": 0, 305 | "_opacityModifyRGB": false, 306 | "groupIndex": 0 307 | }, 308 | { 309 | "__type__": "cc.Label", 310 | "_name": "", 311 | "_objFlags": 0, 312 | "node": { 313 | "__id__": 8 314 | }, 315 | "_enabled": true, 316 | "_useOriginalSize": false, 317 | "_actualFontSize": 12, 318 | "_fontSize": 12, 319 | "_lineHeight": 20, 320 | "_enableWrapText": true, 321 | "_N$file": null, 322 | "_isSystemFontUsed": true, 323 | "_spacingX": 0, 324 | "_N$string": "Lv.0", 325 | "_N$horizontalAlign": 1, 326 | "_N$verticalAlign": 1, 327 | "_N$fontFamily": "Arial", 328 | "_N$overflow": 0 329 | }, 330 | { 331 | "__type__": "cc.PrefabInfo", 332 | "root": { 333 | "__id__": 1 334 | }, 335 | "asset": { 336 | "__uuid__": "6f2e9698-ea00-46dc-9a09-dda3c94ccf14" 337 | }, 338 | "fileId": "7d6Uj2POZAI7/ls8U+oSd2", 339 | "sync": false 340 | }, 341 | { 342 | "__type__": "cc.Sprite", 343 | "_name": "", 344 | "_objFlags": 0, 345 | "node": { 346 | "__id__": 1 347 | }, 348 | "_enabled": true, 349 | "_spriteFrame": { 350 | "__uuid__": "c6b0607b-9440-4082-b1e6-27e10730ed92" 351 | }, 352 | "_type": 1, 353 | "_sizeMode": 0, 354 | "_fillType": 0, 355 | "_fillCenter": { 356 | "__type__": "cc.Vec2", 357 | "x": 0, 358 | "y": 0 359 | }, 360 | "_fillStart": 0, 361 | "_fillRange": 0, 362 | "_isTrimmedMode": true, 363 | "_srcBlendFactor": 770, 364 | "_dstBlendFactor": 771, 365 | "_atlas": null 366 | }, 367 | { 368 | "__type__": "dc690PKQh5Ibp6NPO8+EF97", 369 | "_name": "", 370 | "_objFlags": 0, 371 | "node": { 372 | "__id__": 1 373 | }, 374 | "_enabled": true 375 | }, 376 | { 377 | "__type__": "cc.PrefabInfo", 378 | "root": { 379 | "__id__": 1 380 | }, 381 | "asset": { 382 | "__uuid__": "6f2e9698-ea00-46dc-9a09-dda3c94ccf14" 383 | }, 384 | "fileId": "43oBzdlyBIjZxhRdZr6Xdt", 385 | "sync": false 386 | } 387 | ] -------------------------------------------------------------------------------- /chat_client/assets/prefab/userNode.prefab.meta: -------------------------------------------------------------------------------- 1 | { 2 | "ver": "1.0.0", 3 | "uuid": "6f2e9698-ea00-46dc-9a09-dda3c94ccf14", 4 | "asyncLoadAssets": false, 5 | "subMetas": {} 6 | } -------------------------------------------------------------------------------- /chat_client/assets/scripts.meta: -------------------------------------------------------------------------------- 1 | { 2 | "ver": "1.0.1", 3 | "uuid": "3f97ec73-bfca-4b56-8e8a-3ec0308323e6", 4 | "subMetas": {} 5 | } -------------------------------------------------------------------------------- /chat_client/assets/scripts/ctrls.meta: -------------------------------------------------------------------------------- 1 | { 2 | "ver": "1.0.1", 3 | "uuid": "432dea04-0969-48d6-91a9-ebb8945dfc67", 4 | "subMetas": {} 5 | } -------------------------------------------------------------------------------- /chat_client/assets/scripts/ctrls/ChatCtrl.ts: -------------------------------------------------------------------------------- 1 | import NetUtil from "../utils/NetUtil"; 2 | import { User, Message } from "../objs/Params"; 3 | import GameUtil from "../utils/GameUtil"; 4 | import UserNode from "../nodes/UserNode"; 5 | import Toast from "../utils/Toast"; 6 | 7 | const {ccclass, property} = cc._decorator; 8 | 9 | @ccclass 10 | export default class ChatCtrl extends cc.Component { 11 | 12 | @property(cc.Node) userContent:cc.Node = null; 13 | @property(cc.Prefab) userItem:cc.Prefab = null; 14 | 15 | @property(cc.Node) msgContent:cc.Node = null; 16 | @property(cc.Prefab) otherMsgItem:cc.Prefab = null; 17 | @property(cc.Prefab) selfMsgItem:cc.Prefab = null; 18 | 19 | @property(cc.EditBox) sendAllBox:cc.EditBox = null; 20 | @property(cc.EditBox) sendOneBox:cc.EditBox = null; 21 | @property(cc.ScrollView) msgScrollView:cc.ScrollView = null; 22 | 23 | @property(cc.Node) singleBox:cc.Node = null; 24 | 25 | @property(cc.Label) userInfoLabel:cc.Label = null; 26 | 27 | userList:Array = []; 28 | 29 | singleUser:User = null; 30 | 31 | 32 | onLoad () { 33 | //注册用户登入登出信息 34 | NetUtil.Instance.on('loginInfo',(msg:string)=>{ 35 | cc.log(msg); 36 | Toast.makeText(msg,Toast.LENGTH_LONG).show(); 37 | }) 38 | //获得当前用户信息 39 | NetUtil.Instance.on('userInfo',(user:User)=>{ 40 | GameUtil.Instance.userInfo = user; 41 | cc.log(user); 42 | this.userInfoLabel.string = `当前用户是:${user.name} 当前所处的频道是:${user.channel}` 43 | 44 | }) 45 | //广播的用户列表信息 46 | NetUtil.Instance.on('userList',(userList)=>{ 47 | cc.find('Canvas/login_room').active = false; 48 | //获取当前的用户列表 49 | this.userList = userList; 50 | //更新容器 51 | this.updateUserList(this.userList); 52 | }); 53 | //注册发送给全部人的消息 54 | NetUtil.Instance.on('toAll',(msg:Message)=>{ 55 | let node = cc.instantiate(this.otherMsgItem); 56 | node.getChildByName('name').getComponent(cc.Label).string = msg.from.name; 57 | node.getChildByName('msgBox').getChildByName('msg').getComponent(cc.Label).string = msg.msg; 58 | this.msgContent.addChild(node); 59 | if(this.msgContent.height>480){ 60 | this.msgScrollView.scrollToBottom(0.3); 61 | } 62 | }); 63 | //注册发送给一个人的消息 64 | NetUtil.Instance.on('toOne',(msg:Message)=>{ 65 | let node = cc.instantiate(this.otherMsgItem); 66 | node.getChildByName('name').getComponent(cc.Label).string = msg.from.name; 67 | node.getChildByName('msgBox').getChildByName('msg').getComponent(cc.Label).string = msg.msg; 68 | node.getChildByName('msgBox').getChildByName('msg').color = cc.Color.RED; 69 | this.msgContent.addChild(node); 70 | if(this.msgContent.height>480){ 71 | this.msgScrollView.scrollToBottom(0.3); 72 | } 73 | }); 74 | } 75 | 76 | //更新用户列表的方法 77 | updateUserList(userList:Array){ 78 | //首先清空容器 79 | this.userContent.removeAllChildren(); 80 | userList.forEach(user=>{ 81 | //将用户数据加入容器 82 | let node = cc.instantiate(this.userItem); 83 | node.getComponent(UserNode).init(user); 84 | node.getChildByName('name').getComponent(cc.Label).string = user.name; 85 | this.userContent.addChild(node); 86 | }) 87 | } 88 | //发送给所有人的方法 89 | sendToAll(){ 90 | let str = this.sendAllBox.string; 91 | if(str.length<1){ 92 | return; 93 | } 94 | this.sendAllBox.string = ""; 95 | let node = cc.instantiate(this.selfMsgItem); 96 | node.getChildByName('name').getComponent(cc.Label).string = GameUtil.Instance.userInfo.name; 97 | node.getChildByName('msgBox').getChildByName('msg').getComponent(cc.Label).string = str; 98 | this.msgContent.addChild(node); 99 | 100 | let msg:Message ={from:GameUtil.Instance.userInfo,msg:str}; 101 | NetUtil.Instance.emit('toAll',msg); 102 | if(this.msgContent.height>480){ 103 | this.msgScrollView.scrollToBottom(0.3); 104 | } 105 | 106 | } 107 | //发送给一个人的方法 108 | sendToOne(){ 109 | let str = this.sendOneBox.string; 110 | if(str.length<1){ 111 | return; 112 | } 113 | this.sendOneBox.string = ""; 114 | let node = cc.instantiate(this.selfMsgItem); 115 | node.getChildByName('name').getComponent(cc.Label).string = GameUtil.Instance.userInfo.name; 116 | node.getChildByName('msgBox').getChildByName('msg').getComponent(cc.Label).string = str; 117 | this.msgContent.addChild(node); 118 | 119 | let msg:Message ={from:GameUtil.Instance.userInfo,msg:str,to:this.singleUser.id}; 120 | NetUtil.Instance.emit('toOne',msg) 121 | if(this.msgContent.height>480){ 122 | this.msgScrollView.scrollToBottom(0.3); 123 | } 124 | this.singleBox.active = false; 125 | } 126 | //显示当然消息界面的方法 127 | showSingleBox(user:User){ 128 | //缓存需要发送的人的消息 129 | this.singleUser = user; 130 | this.singleBox.getChildByName('board').getChildByName('to').getComponent(cc.Label).string = user.name; 131 | this.singleBox.active = true; 132 | } 133 | } 134 | -------------------------------------------------------------------------------- /chat_client/assets/scripts/ctrls/ChatCtrl.ts.meta: -------------------------------------------------------------------------------- 1 | { 2 | "ver": "1.0.5", 3 | "uuid": "23f1b4a3-91c7-457d-b8b9-5f26155300b4", 4 | "isPlugin": false, 5 | "loadPluginInWeb": true, 6 | "loadPluginInNative": true, 7 | "loadPluginInEditor": false, 8 | "subMetas": {} 9 | } -------------------------------------------------------------------------------- /chat_client/assets/scripts/ctrls/LoadingCtrl.ts: -------------------------------------------------------------------------------- 1 | import NetUtil from "../utils/NetUtil"; 2 | 3 | const {ccclass, property} = cc._decorator; 4 | 5 | @ccclass 6 | export default class Loading extends cc.Component { 7 | 8 | //初始化项目 9 | initGame(){ 10 | NetUtil.Instance.init(); 11 | 12 | } 13 | 14 | onLoad () { 15 | this.initGame(); 16 | setTimeout(()=>{ 17 | cc.director.loadScene('Chat'); 18 | },1000); 19 | 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /chat_client/assets/scripts/ctrls/LoadingCtrl.ts.meta: -------------------------------------------------------------------------------- 1 | { 2 | "ver": "1.0.5", 3 | "uuid": "c09ab99a-fd83-417a-bd23-885ef60f44d7", 4 | "isPlugin": false, 5 | "loadPluginInWeb": true, 6 | "loadPluginInNative": true, 7 | "loadPluginInEditor": false, 8 | "subMetas": {} 9 | } -------------------------------------------------------------------------------- /chat_client/assets/scripts/ctrls/LoginCtrl.ts: -------------------------------------------------------------------------------- 1 | import NetUtil from "../utils/NetUtil"; 2 | import GameUtil from "../utils/GameUtil"; 3 | import IoUtils from "../utils/IoUtil"; 4 | import { User } from "../objs/Params"; 5 | import Toast from "../utils/Toast"; 6 | 7 | const {ccclass, property} = cc._decorator; 8 | 9 | const md5 = require('../libs/md5.min'); 10 | 11 | @ccclass 12 | export default class LoginCtrl extends cc.Component { 13 | 14 | @property(cc.Label) label: cc.Label = null; 15 | @property(cc.EditBox) userBox: cc.EditBox = null; 16 | @property(cc.EditBox) passwordBox: cc.EditBox = null; 17 | @property(cc.EditBox) channelBox: cc.EditBox = null; 18 | 19 | onLoad(){ 20 | NetUtil.Instance.on('registerInfo',msg=>{ 21 | Toast.makeText(msg,Toast.LENGTH_LONG).show(); 22 | }); 23 | 24 | NetUtil.Instance.on('loginInfo',msg=>{ 25 | Toast.makeText(msg,Toast.LENGTH_LONG).show(); 26 | }); 27 | 28 | } 29 | 30 | register(){ 31 | let name = this.userBox.string; 32 | if(name.length<2){ 33 | return; 34 | } 35 | 36 | let password = this.passwordBox.string; 37 | if(password.length<2){ 38 | return; 39 | } 40 | password = md5(password); 41 | 42 | let user ={name,password}; 43 | NetUtil.Instance.emit('register',user); 44 | } 45 | 46 | 47 | login(){ 48 | let name = this.userBox.string; 49 | if(name.length<2){ 50 | return; 51 | } 52 | 53 | let channel = this.channelBox.string; 54 | if(channel.length<2){ 55 | return; 56 | } 57 | 58 | let password = this.passwordBox.string; 59 | if(password.length<2){ 60 | return; 61 | } 62 | password = md5(password); 63 | 64 | let user:User ={id:"",name,password,imgUrl:"",channel}; 65 | NetUtil.Instance.emit('login',user); 66 | } 67 | 68 | update (dt) { 69 | this.label.string = `${NetUtil.Instance.delayMS}ms`; 70 | 71 | if(NetUtil.Instance.delayMS<50){ 72 | this.label.node.color = cc.Color.GREEN; 73 | } 74 | else{ 75 | this.label.node.color = cc.Color.RED; 76 | } 77 | } 78 | } 79 | -------------------------------------------------------------------------------- /chat_client/assets/scripts/ctrls/LoginCtrl.ts.meta: -------------------------------------------------------------------------------- 1 | { 2 | "ver": "1.0.5", 3 | "uuid": "1b4f1860-8fd8-4495-ab75-9c7e111a1b3f", 4 | "isPlugin": false, 5 | "loadPluginInWeb": true, 6 | "loadPluginInNative": true, 7 | "loadPluginInEditor": false, 8 | "subMetas": {} 9 | } -------------------------------------------------------------------------------- /chat_client/assets/scripts/libs.meta: -------------------------------------------------------------------------------- 1 | { 2 | "ver": "1.0.1", 3 | "uuid": "f2932635-4595-4959-b65b-d47a948b97b0", 4 | "subMetas": {} 5 | } -------------------------------------------------------------------------------- /chat_client/assets/scripts/libs/md5.min.js: -------------------------------------------------------------------------------- 1 | /** 2 | * [js-md5]{@link https://github.com/emn178/js-md5} 3 | * 4 | * @namespace md5 5 | * @version 0.7.3 6 | * @author Chen, Yi-Cyuan [emn178@gmail.com] 7 | * @copyright Chen, Yi-Cyuan 2014-2017 8 | * @license MIT 9 | */ 10 | !function(){"use strict";function t(t){if(t)d[0]=d[16]=d[1]=d[2]=d[3]=d[4]=d[5]=d[6]=d[7]=d[8]=d[9]=d[10]=d[11]=d[12]=d[13]=d[14]=d[15]=0,this.blocks=d,this.buffer8=l;else if(a){var r=new ArrayBuffer(68);this.buffer8=new Uint8Array(r),this.blocks=new Uint32Array(r)}else this.blocks=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0];this.h0=this.h1=this.h2=this.h3=this.start=this.bytes=this.hBytes=0,this.finalized=this.hashed=!1,this.first=!0}var r="input is invalid type",e="object"==typeof window,i=e?window:{};i.JS_MD5_NO_WINDOW&&(e=!1);var s=!e&&"object"==typeof self,h=!i.JS_MD5_NO_NODE_JS&&"object"==typeof process&&process.versions&&process.versions.node;h?i=global:s&&(i=self);var f=!i.JS_MD5_NO_COMMON_JS&&"object"==typeof module&&module.exports,o="function"==typeof define&&define.amd,a=!i.JS_MD5_NO_ARRAY_BUFFER&&"undefined"!=typeof ArrayBuffer,n="0123456789abcdef".split(""),u=[128,32768,8388608,-2147483648],y=[0,8,16,24],c=["hex","array","digest","buffer","arrayBuffer","base64"],p="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".split(""),d=[],l;if(a){var A=new ArrayBuffer(68);l=new Uint8Array(A),d=new Uint32Array(A)}!i.JS_MD5_NO_NODE_JS&&Array.isArray||(Array.isArray=function(t){return"[object Array]"===Object.prototype.toString.call(t)}),!a||!i.JS_MD5_NO_ARRAY_BUFFER_IS_VIEW&&ArrayBuffer.isView||(ArrayBuffer.isView=function(t){return"object"==typeof t&&t.buffer&&t.buffer.constructor===ArrayBuffer});var b=function(r){return function(e){return new t(!0).update(e)[r]()}},v=function(){var r=b("hex");h&&(r=w(r)),r.create=function(){return new t},r.update=function(t){return r.create().update(t)};for(var e=0;e>2]|=t[f]<>6,u[h++]=128|63&s):s<55296||s>=57344?(u[h++]=224|s>>12,u[h++]=128|s>>6&63,u[h++]=128|63&s):(s=65536+((1023&s)<<10|1023&t.charCodeAt(++f)),u[h++]=240|s>>18,u[h++]=128|s>>12&63,u[h++]=128|s>>6&63,u[h++]=128|63&s);else for(h=this.start;f>2]|=s<>2]|=(192|s>>6)<>2]|=(128|63&s)<=57344?(n[h>>2]|=(224|s>>12)<>2]|=(128|s>>6&63)<>2]|=(128|63&s)<>2]|=(240|s>>18)<>2]|=(128|s>>12&63)<>2]|=(128|s>>6&63)<>2]|=(128|63&s)<=64?(this.start=h-64,this.hash(),this.hashed=!0):this.start=h}return this.bytes>4294967295&&(this.hBytes+=this.bytes/4294967296<<0,this.bytes=this.bytes%4294967296),this}},t.prototype.finalize=function(){if(!this.finalized){this.finalized=!0;var t=this.blocks,r=this.lastByteIndex;t[r>>2]|=u[3&r],r>=56&&(this.hashed||this.hash(),t[0]=t[16],t[16]=t[1]=t[2]=t[3]=t[4]=t[5]=t[6]=t[7]=t[8]=t[9]=t[10]=t[11]=t[12]=t[13]=t[14]=t[15]=0),t[14]=this.bytes<<3,t[15]=this.hBytes<<3|this.bytes>>>29,this.hash()}},t.prototype.hash=function(){var t,r,e,i,s,h,f=this.blocks;this.first?r=((r=((t=((t=f[0]-680876937)<<7|t>>>25)-271733879<<0)^(e=((e=(-271733879^(i=((i=(-1732584194^2004318071&t)+f[1]-117830708)<<12|i>>>20)+t<<0)&(-271733879^t))+f[2]-1126478375)<<17|e>>>15)+i<<0)&(i^t))+f[3]-1316259209)<<22|r>>>10)+e<<0:(t=this.h0,r=this.h1,e=this.h2,r=((r+=((t=((t+=((i=this.h3)^r&(e^i))+f[0]-680876936)<<7|t>>>25)+r<<0)^(e=((e+=(r^(i=((i+=(e^t&(r^e))+f[1]-389564586)<<12|i>>>20)+t<<0)&(t^r))+f[2]+606105819)<<17|e>>>15)+i<<0)&(i^t))+f[3]-1044525330)<<22|r>>>10)+e<<0),r=((r+=((t=((t+=(i^r&(e^i))+f[4]-176418897)<<7|t>>>25)+r<<0)^(e=((e+=(r^(i=((i+=(e^t&(r^e))+f[5]+1200080426)<<12|i>>>20)+t<<0)&(t^r))+f[6]-1473231341)<<17|e>>>15)+i<<0)&(i^t))+f[7]-45705983)<<22|r>>>10)+e<<0,r=((r+=((t=((t+=(i^r&(e^i))+f[8]+1770035416)<<7|t>>>25)+r<<0)^(e=((e+=(r^(i=((i+=(e^t&(r^e))+f[9]-1958414417)<<12|i>>>20)+t<<0)&(t^r))+f[10]-42063)<<17|e>>>15)+i<<0)&(i^t))+f[11]-1990404162)<<22|r>>>10)+e<<0,r=((r+=((t=((t+=(i^r&(e^i))+f[12]+1804603682)<<7|t>>>25)+r<<0)^(e=((e+=(r^(i=((i+=(e^t&(r^e))+f[13]-40341101)<<12|i>>>20)+t<<0)&(t^r))+f[14]-1502002290)<<17|e>>>15)+i<<0)&(i^t))+f[15]+1236535329)<<22|r>>>10)+e<<0,r=((r+=((i=((i+=(r^e&((t=((t+=(e^i&(r^e))+f[1]-165796510)<<5|t>>>27)+r<<0)^r))+f[6]-1069501632)<<9|i>>>23)+t<<0)^t&((e=((e+=(t^r&(i^t))+f[11]+643717713)<<14|e>>>18)+i<<0)^i))+f[0]-373897302)<<20|r>>>12)+e<<0,r=((r+=((i=((i+=(r^e&((t=((t+=(e^i&(r^e))+f[5]-701558691)<<5|t>>>27)+r<<0)^r))+f[10]+38016083)<<9|i>>>23)+t<<0)^t&((e=((e+=(t^r&(i^t))+f[15]-660478335)<<14|e>>>18)+i<<0)^i))+f[4]-405537848)<<20|r>>>12)+e<<0,r=((r+=((i=((i+=(r^e&((t=((t+=(e^i&(r^e))+f[9]+568446438)<<5|t>>>27)+r<<0)^r))+f[14]-1019803690)<<9|i>>>23)+t<<0)^t&((e=((e+=(t^r&(i^t))+f[3]-187363961)<<14|e>>>18)+i<<0)^i))+f[8]+1163531501)<<20|r>>>12)+e<<0,r=((r+=((i=((i+=(r^e&((t=((t+=(e^i&(r^e))+f[13]-1444681467)<<5|t>>>27)+r<<0)^r))+f[2]-51403784)<<9|i>>>23)+t<<0)^t&((e=((e+=(t^r&(i^t))+f[7]+1735328473)<<14|e>>>18)+i<<0)^i))+f[12]-1926607734)<<20|r>>>12)+e<<0,r=((r+=((h=(i=((i+=((s=r^e)^(t=((t+=(s^i)+f[5]-378558)<<4|t>>>28)+r<<0))+f[8]-2022574463)<<11|i>>>21)+t<<0)^t)^(e=((e+=(h^r)+f[11]+1839030562)<<16|e>>>16)+i<<0))+f[14]-35309556)<<23|r>>>9)+e<<0,r=((r+=((h=(i=((i+=((s=r^e)^(t=((t+=(s^i)+f[1]-1530992060)<<4|t>>>28)+r<<0))+f[4]+1272893353)<<11|i>>>21)+t<<0)^t)^(e=((e+=(h^r)+f[7]-155497632)<<16|e>>>16)+i<<0))+f[10]-1094730640)<<23|r>>>9)+e<<0,r=((r+=((h=(i=((i+=((s=r^e)^(t=((t+=(s^i)+f[13]+681279174)<<4|t>>>28)+r<<0))+f[0]-358537222)<<11|i>>>21)+t<<0)^t)^(e=((e+=(h^r)+f[3]-722521979)<<16|e>>>16)+i<<0))+f[6]+76029189)<<23|r>>>9)+e<<0,r=((r+=((h=(i=((i+=((s=r^e)^(t=((t+=(s^i)+f[9]-640364487)<<4|t>>>28)+r<<0))+f[12]-421815835)<<11|i>>>21)+t<<0)^t)^(e=((e+=(h^r)+f[15]+530742520)<<16|e>>>16)+i<<0))+f[2]-995338651)<<23|r>>>9)+e<<0,r=((r+=((i=((i+=(r^((t=((t+=(e^(r|~i))+f[0]-198630844)<<6|t>>>26)+r<<0)|~e))+f[7]+1126891415)<<10|i>>>22)+t<<0)^((e=((e+=(t^(i|~r))+f[14]-1416354905)<<15|e>>>17)+i<<0)|~t))+f[5]-57434055)<<21|r>>>11)+e<<0,r=((r+=((i=((i+=(r^((t=((t+=(e^(r|~i))+f[12]+1700485571)<<6|t>>>26)+r<<0)|~e))+f[3]-1894986606)<<10|i>>>22)+t<<0)^((e=((e+=(t^(i|~r))+f[10]-1051523)<<15|e>>>17)+i<<0)|~t))+f[1]-2054922799)<<21|r>>>11)+e<<0,r=((r+=((i=((i+=(r^((t=((t+=(e^(r|~i))+f[8]+1873313359)<<6|t>>>26)+r<<0)|~e))+f[15]-30611744)<<10|i>>>22)+t<<0)^((e=((e+=(t^(i|~r))+f[6]-1560198380)<<15|e>>>17)+i<<0)|~t))+f[13]+1309151649)<<21|r>>>11)+e<<0,r=((r+=((i=((i+=(r^((t=((t+=(e^(r|~i))+f[4]-145523070)<<6|t>>>26)+r<<0)|~e))+f[11]-1120210379)<<10|i>>>22)+t<<0)^((e=((e+=(t^(i|~r))+f[2]+718787259)<<15|e>>>17)+i<<0)|~t))+f[9]-343485551)<<21|r>>>11)+e<<0,this.first?(this.h0=t+1732584193<<0,this.h1=r-271733879<<0,this.h2=e-1732584194<<0,this.h3=i+271733878<<0,this.first=!1):(this.h0=this.h0+t<<0,this.h1=this.h1+r<<0,this.h2=this.h2+e<<0,this.h3=this.h3+i<<0)},t.prototype.hex=function(){this.finalize();var t=this.h0,r=this.h1,e=this.h2,i=this.h3;return n[t>>4&15]+n[15&t]+n[t>>12&15]+n[t>>8&15]+n[t>>20&15]+n[t>>16&15]+n[t>>28&15]+n[t>>24&15]+n[r>>4&15]+n[15&r]+n[r>>12&15]+n[r>>8&15]+n[r>>20&15]+n[r>>16&15]+n[r>>28&15]+n[r>>24&15]+n[e>>4&15]+n[15&e]+n[e>>12&15]+n[e>>8&15]+n[e>>20&15]+n[e>>16&15]+n[e>>28&15]+n[e>>24&15]+n[i>>4&15]+n[15&i]+n[i>>12&15]+n[i>>8&15]+n[i>>20&15]+n[i>>16&15]+n[i>>28&15]+n[i>>24&15]},t.prototype.toString=t.prototype.hex,t.prototype.digest=function(){this.finalize();var t=this.h0,r=this.h1,e=this.h2,i=this.h3;return[255&t,t>>8&255,t>>16&255,t>>24&255,255&r,r>>8&255,r>>16&255,r>>24&255,255&e,e>>8&255,e>>16&255,e>>24&255,255&i,i>>8&255,i>>16&255,i>>24&255]},t.prototype.array=t.prototype.digest,t.prototype.arrayBuffer=function(){this.finalize();var t=new ArrayBuffer(16),r=new Uint32Array(t);return r[0]=this.h0,r[1]=this.h1,r[2]=this.h2,r[3]=this.h3,t},t.prototype.buffer=t.prototype.arrayBuffer,t.prototype.base64=function(){for(var t,r,e,i="",s=this.array(),h=0;h<15;)t=s[h++],r=s[h++],e=s[h++],i+=p[t>>>2]+p[63&(t<<4|r>>>4)]+p[63&(r<<2|e>>>6)]+p[63&e];return t=s[h],i+=p[t>>>2]+p[t<<4&63]+"=="};var _=v();f?module.exports=_:(i.md5=_,o&&define(function(){return _}))}(); -------------------------------------------------------------------------------- /chat_client/assets/scripts/libs/md5.min.js.meta: -------------------------------------------------------------------------------- 1 | { 2 | "ver": "1.0.5", 3 | "uuid": "b78abf14-9bea-4d87-a341-3b627aa2e4bd", 4 | "isPlugin": false, 5 | "loadPluginInWeb": true, 6 | "loadPluginInNative": true, 7 | "loadPluginInEditor": false, 8 | "subMetas": {} 9 | } -------------------------------------------------------------------------------- /chat_client/assets/scripts/libs/socket.meta: -------------------------------------------------------------------------------- 1 | { 2 | "ver": "1.0.1", 3 | "uuid": "41587032-2508-4f81-b4c1-3d8b16c012ff", 4 | "subMetas": {} 5 | } -------------------------------------------------------------------------------- /chat_client/assets/scripts/libs/socket/socket.io.js.meta: -------------------------------------------------------------------------------- 1 | { 2 | "ver": "1.0.5", 3 | "uuid": "e074f634-bc6d-4134-863f-bb4cfdcb282f", 4 | "isPlugin": true, 5 | "loadPluginInWeb": true, 6 | "loadPluginInNative": true, 7 | "loadPluginInEditor": false, 8 | "subMetas": {} 9 | } -------------------------------------------------------------------------------- /chat_client/assets/scripts/nodes.meta: -------------------------------------------------------------------------------- 1 | { 2 | "ver": "1.0.1", 3 | "uuid": "cdadffe0-2cbb-4f11-9fc0-280bdbcbcc07", 4 | "subMetas": {} 5 | } -------------------------------------------------------------------------------- /chat_client/assets/scripts/nodes/UserNode.ts: -------------------------------------------------------------------------------- 1 | import { User } from "../objs/Params"; 2 | import ChatCtrl from "../ctrls/ChatCtrl"; 3 | 4 | const {ccclass, property} = cc._decorator; 5 | 6 | @ccclass 7 | export default class UserNode extends cc.Component { 8 | 9 | user:User = null; 10 | 11 | /** 12 | * 初始化 13 | * @param user 14 | */ 15 | init(user:User){ 16 | this.user = user; 17 | this.node.on(cc.Node.EventType.TOUCH_END,event=>{ 18 | //获得控制脚本 19 | let chatCtrl = cc.find('Canvas/chat_room').getComponent(ChatCtrl); 20 | chatCtrl.showSingleBox(this.user); 21 | }); 22 | } 23 | 24 | } 25 | -------------------------------------------------------------------------------- /chat_client/assets/scripts/nodes/UserNode.ts.meta: -------------------------------------------------------------------------------- 1 | { 2 | "ver": "1.0.5", 3 | "uuid": "dc6903ca-421e-486e-9e8d-3cef3e105f7b", 4 | "isPlugin": false, 5 | "loadPluginInWeb": true, 6 | "loadPluginInNative": true, 7 | "loadPluginInEditor": false, 8 | "subMetas": {} 9 | } -------------------------------------------------------------------------------- /chat_client/assets/scripts/objs.meta: -------------------------------------------------------------------------------- 1 | { 2 | "ver": "1.0.1", 3 | "uuid": "f6ef41f1-e18d-4d57-b11f-b36fe2a64b86", 4 | "subMetas": {} 5 | } -------------------------------------------------------------------------------- /chat_client/assets/scripts/objs/Params.ts: -------------------------------------------------------------------------------- 1 | export interface User{ 2 | id:string; //用户的id 3 | name:string; //用户名 4 | password:string; //密码 5 | channel:string; //当前的频道 6 | imgUrl:string; //用户头像的图片地址 7 | } 8 | 9 | export interface Message{ 10 | from:User ; //发送的用户 11 | msg:string ; //发送的信息 12 | to?:string ; //发送给的人 没有则发送全部 13 | } -------------------------------------------------------------------------------- /chat_client/assets/scripts/objs/Params.ts.meta: -------------------------------------------------------------------------------- 1 | { 2 | "ver": "1.0.5", 3 | "uuid": "d333b8a7-1e99-48b2-92ae-82ec4ac8286d", 4 | "isPlugin": false, 5 | "loadPluginInWeb": true, 6 | "loadPluginInNative": true, 7 | "loadPluginInEditor": false, 8 | "subMetas": {} 9 | } -------------------------------------------------------------------------------- /chat_client/assets/scripts/utils.meta: -------------------------------------------------------------------------------- 1 | { 2 | "ver": "1.0.1", 3 | "uuid": "a2edaf1e-6163-487d-a51a-dc3fd05058f4", 4 | "subMetas": {} 5 | } -------------------------------------------------------------------------------- /chat_client/assets/scripts/utils/GameUtil.ts: -------------------------------------------------------------------------------- 1 | import { User } from "../objs/Params"; 2 | 3 | export default class GameUtil { 4 | 5 | public static readonly Instance: GameUtil = new GameUtil(); 6 | private GameUtil(){} 7 | 8 | //用户信息 9 | userInfo:User; 10 | 11 | /** 12 | * 获得guid 13 | */ 14 | guid() { 15 | return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function(c) { 16 | var r = Math.random()*16|0, v = c == 'x' ? r : (r&0x3|0x8); 17 | return v.toString(16); 18 | }); 19 | } 20 | 21 | 22 | 23 | } 24 | -------------------------------------------------------------------------------- /chat_client/assets/scripts/utils/GameUtil.ts.meta: -------------------------------------------------------------------------------- 1 | { 2 | "ver": "1.0.5", 3 | "uuid": "e1e399c6-88ec-41a4-96bb-3d3540fa086c", 4 | "isPlugin": false, 5 | "loadPluginInWeb": true, 6 | "loadPluginInNative": true, 7 | "loadPluginInEditor": false, 8 | "subMetas": {} 9 | } -------------------------------------------------------------------------------- /chat_client/assets/scripts/utils/IoUtil.ts: -------------------------------------------------------------------------------- 1 | export default class IoUtils { 2 | /** 3 | * 获取数据 4 | * @param key 键 5 | */ 6 | static get(key:string):string{ 7 | return cc.sys.localStorage.getItem(key); 8 | } 9 | 10 | /** 11 | * 保存数据 12 | * @param key 键 13 | * @param value 值 14 | */ 15 | static put(key:string, value:string){ 16 | cc.sys.localStorage.setItem(key, value); 17 | } 18 | 19 | /** 20 | * 删除数据 21 | * @param key 键 22 | */ 23 | static remove(key:string){ 24 | cc.sys.localStorage.removeItem(key) ; 25 | } 26 | } -------------------------------------------------------------------------------- /chat_client/assets/scripts/utils/IoUtil.ts.meta: -------------------------------------------------------------------------------- 1 | { 2 | "ver": "1.0.5", 3 | "uuid": "c6f55ebc-1dfd-42f6-bb40-91aed063348a", 4 | "isPlugin": false, 5 | "loadPluginInWeb": true, 6 | "loadPluginInNative": true, 7 | "loadPluginInEditor": false, 8 | "subMetas": {} 9 | } -------------------------------------------------------------------------------- /chat_client/assets/scripts/utils/NetUtil.ts: -------------------------------------------------------------------------------- 1 | const io = (window as any).io || {}; 2 | export default class NetUtil{ 3 | public static readonly Instance: NetUtil = new NetUtil(); 4 | private NetUtil(){} 5 | //网络延时 ms 6 | delayMS:number = 0; 7 | private sio = null; 8 | private connected:boolean = false; 9 | private isPinging:boolean = false; 10 | private lastRecieveTime:number = 0; 11 | private lastSendTime:number = 0; 12 | /** 13 | * 初始化 14 | */ 15 | init(){ 16 | let opts = { 17 | 'reconnection':false, 18 | 'force new connection': true, 19 | 'transports':['websocket', 'polling'] 20 | } 21 | this.sio = io.connect('http://127.0.0.1:3000',opts); 22 | 23 | this.sio.on('connect',(data)=>{ 24 | console.log('connect'); 25 | this.connected = true; 26 | }) 27 | 28 | this.sio.on('disconnect',(data)=>{ 29 | console.log("disconnect"); 30 | this.connected = false; 31 | }); 32 | 33 | this.startHearbeat(); 34 | } 35 | 36 | /** 37 | * 获取客户端实体 38 | */ 39 | getClient(){ 40 | return this.sio; 41 | } 42 | 43 | /** 44 | * 开启心跳包 45 | */ 46 | startHearbeat(){ 47 | this.sio.on('game_pong',()=>{ 48 | //console.log('game_pong'); 49 | this.lastRecieveTime = Date.now(); 50 | this.delayMS = this.lastRecieveTime - this.lastSendTime; 51 | //console.log(this.delayMS); 52 | }); 53 | this.lastRecieveTime = Date.now(); 54 | if(!this.isPinging){ 55 | this.isPinging = true; 56 | cc.game.on(cc.game.EVENT_HIDE,()=>{ 57 | this.ping(); 58 | }); 59 | setInterval(()=>{ 60 | if(this.sio){ 61 | this.ping(); 62 | } 63 | },2000); 64 | setInterval(()=>{ 65 | if(this.sio){ 66 | if(Date.now() - this.lastRecieveTime > 10000){ 67 | this.close(); 68 | } 69 | } 70 | },500); 71 | } 72 | } 73 | 74 | /** 75 | * ping 76 | */ 77 | ping(){ 78 | if(this.sio){ 79 | this.lastSendTime = Date.now(); 80 | this.sio.emit('game_ping'); 81 | } 82 | } 83 | 84 | /** 85 | * 关闭 86 | */ 87 | close(){ 88 | console.log('close'); 89 | this.delayMS = null; 90 | if(this.sio && this.connected){ 91 | this.connected = false; 92 | this.sio.disconnect(); 93 | } 94 | this.sio = null; 95 | } 96 | 97 | /** 98 | * 绑定事件 99 | * @param event 100 | * @param cb 101 | */ 102 | on(event:string,cb){ 103 | this.sio.on(event,cb); 104 | } 105 | 106 | /** 107 | * 击发服务器事件 108 | * @param event 109 | * @param data 110 | */ 111 | emit(event:string,data?:any){ 112 | if(data){ 113 | this.sio.emit(event,data); 114 | return; 115 | } 116 | this.sio.emit(event); 117 | } 118 | 119 | 120 | 121 | } 122 | -------------------------------------------------------------------------------- /chat_client/assets/scripts/utils/NetUtil.ts.meta: -------------------------------------------------------------------------------- 1 | { 2 | "ver": "1.0.5", 3 | "uuid": "8941711e-e46a-4713-8630-b6daecdbdef5", 4 | "isPlugin": false, 5 | "loadPluginInWeb": true, 6 | "loadPluginInNative": true, 7 | "loadPluginInEditor": false, 8 | "subMetas": {} 9 | } -------------------------------------------------------------------------------- /chat_client/assets/scripts/utils/Toast.ts: -------------------------------------------------------------------------------- 1 | /** 2 | * 吐司的显示任务 3 | */ 4 | interface ToastTask{ 5 | text:string, 6 | duration:number 7 | } 8 | 9 | /** 10 | * 吐司的实体 11 | */ 12 | class ToastObject{ 13 | private _text; 14 | private _duration; 15 | private _gravity; 16 | private _x = 0; 17 | private _y = 0; 18 | 19 | /** 20 | * 初始化 21 | * @param text 22 | * @param duration 23 | */ 24 | constructor(text:string,duration:number){ 25 | this._text = text; 26 | this._duration = duration; 27 | } 28 | 29 | /** 30 | * 显示Toast的方法 31 | */ 32 | show() { 33 | if(Toast.showing){ 34 | let text = this._text; 35 | let duration = this._duration; 36 | Toast.TaskArray.push({text,duration}); 37 | 38 | //超过5条之前的直接舍弃 39 | if(Toast.TaskArray.length>Toast.MAX_ARRAY){ 40 | Toast.TaskArray.shift(); 41 | } 42 | 43 | return; 44 | } 45 | // 加载背景纹理 46 | if (Toast.bgSpriteFrame == null) { 47 | cc.loader.load({ 'uuid': 'b43ff3c2-02bb-4874-81f7-f2dea6970f18' },(error, result)=>{ 48 | if (error) { 49 | cc.error(error); 50 | return; 51 | } 52 | Toast.bgSpriteFrame = new cc.SpriteFrame(result); 53 | Toast.bgSpriteFrame.insetTop = 3; 54 | Toast.bgSpriteFrame.insetBottom = 3; 55 | Toast.bgSpriteFrame.insetLeft = 4; 56 | Toast.bgSpriteFrame.insetRight = 4; 57 | //加载完再调用 58 | this.show(); 59 | }); 60 | return; 61 | } 62 | Toast.showing = true; 63 | // canvas 64 | var canvas = cc.director.getScene().getComponentInChildren(cc.Canvas); 65 | var width = canvas.node.width; 66 | var height = canvas.node.height; 67 | if (this._duration === undefined) { 68 | this._duration = Toast.LENGTH_SHORT; 69 | } 70 | // 背景图片设置 71 | let bgNode = new cc.Node(); 72 | // 背景图片透明度 73 | bgNode.opacity = 200; 74 | let bgSprite = bgNode.addComponent(cc.Sprite); 75 | bgSprite.type = cc.Sprite.Type.SLICED; 76 | let bgLayout = bgNode.addComponent(cc.Layout); 77 | bgLayout.resizeMode = cc.Layout.ResizeMode.CONTAINER; 78 | 79 | // Lable文本格式设置 80 | let textNode = new cc.Node(); 81 | let textLabel = textNode.addComponent(cc.Label); 82 | textLabel.horizontalAlign = cc.Label.HorizontalAlign.CENTER; 83 | textLabel.verticalAlign = cc.Label.VerticalAlign.CENTER; 84 | textLabel.fontSize = 20; 85 | textLabel.string = this._text; 86 | 87 | //背景图片与文本内容的间距 88 | let hPadding = textLabel.fontSize / 8; 89 | let vPadding = 2; 90 | bgLayout.paddingLeft = hPadding; 91 | bgLayout.paddingRight = hPadding; 92 | bgLayout.paddingTop = vPadding; 93 | bgLayout.paddingBottom = vPadding; 94 | 95 | // 当文本宽度过长时,设置为自动换行格式 96 | if (this._text.length * textLabel.fontSize > width / 3) { 97 | textNode.width = width / 3; 98 | textLabel.overflow = cc.Label.Overflow.RESIZE_HEIGHT; 99 | } 100 | 101 | bgNode.addChild(textNode); 102 | if (Toast.bgSpriteFrame) { 103 | bgSprite.spriteFrame = Toast.bgSpriteFrame; 104 | } 105 | // gravity 设置Toast显示的位置 106 | if (this._gravity == Toast.CENTER) { 107 | textNode.y = 0; 108 | textNode.x = 0; 109 | } else if (this._gravity == Toast.TOP) { 110 | textNode.y = textNode.y + (height / 5) * 2; 111 | } else if (this._gravity == Toast.TOP_LEFT) { 112 | textNode.y = textNode.y + (height / 5) * 2; 113 | textNode.x = textNode.x + (width / 5); 114 | } else if (this._gravity == Toast.LEFT) { 115 | textNode.x = textNode.x + (width / 5); 116 | } else if (this._gravity == Toast.BOTTOM_LEFT) { 117 | textNode.y = textNode.y - (height / 5) * 2; 118 | textNode.x = textNode.x + (width / 5); 119 | } else if (this._gravity == Toast.BOTTOM) { 120 | textNode.y = textNode.y - (height / 5) * 2; 121 | } else if (this._gravity == Toast.BOTTOM_RIGHT) { 122 | textNode.y = textNode.y - (height / 5) * 2; 123 | textNode.x = textNode.x - (width / 5); 124 | } else if (this._gravity == Toast.RIGHT) { 125 | textNode.x = textNode.x - (width / 5); 126 | } else if (this._gravity == Toast.TOP_RIGHT) { 127 | textNode.y = textNode.y + (height / 5) * 2; 128 | textNode.x = textNode.x - (width / 5); 129 | } else { 130 | // 默认情况 BOTTOM 131 | textNode.y = textNode.y - (height / 5) * 2; 132 | } 133 | textNode.x = textNode.x + this._x; 134 | textNode.y = textNode.y + this._y; 135 | 136 | canvas.node.addChild(bgNode); 137 | 138 | let finished = cc.callFunc((target)=>{ 139 | bgNode.destroy(); 140 | Toast.showing = false; 141 | //showing 142 | if(Toast.TaskArray.length==0){ 143 | 144 | } 145 | else{ 146 | let task = Toast.TaskArray.shift(); 147 | Toast.showText(task.text,task.duration); 148 | } 149 | }); 150 | let action = cc.sequence(cc.moveBy(this._duration,cc.p(0,0)),cc.fadeOut(0.3), finished); 151 | bgNode.runAction(action); 152 | } 153 | 154 | /** 155 | * 156 | * @param gravity 位置 157 | * @param x 偏移值x 158 | * @param y 偏移值y 159 | */ 160 | setGravity(gravity:number, x:number, y:number) { 161 | this._gravity = gravity; 162 | this._x = x; 163 | this._y = y; 164 | } 165 | } 166 | 167 | 168 | export default class Toast{ 169 | /** 170 | * 时长 171 | */ 172 | static LENGTH_LONG:number = 3.5; 173 | static LENGTH_SHORT:number = 1; 174 | /** 175 | * 位置 176 | */ 177 | static CENTER:number = 0; 178 | static TOP:number = 1; 179 | static TOP_LEFT:number = 2; 180 | static LEFT:number = 3; 181 | static BOTTOM_LEFT:number = 4; 182 | static BOTTOM:number = 5; 183 | static BOTTOM_RIGHT:number = 6; 184 | static RIGHT:number = 7; 185 | static TOP_RIGHT:number = 8; 186 | 187 | static bgSpriteFrame:cc.SpriteFrame = null; 188 | 189 | //任务队列 190 | static TaskArray:Array = []; 191 | 192 | //是否正在显示 193 | static showing:boolean = false; 194 | 195 | static MAX_ARRAY:number = 5; 196 | /** 197 | * 198 | * 创建一个吐司 199 | * @param text 文本 200 | * @param duration 时长 201 | */ 202 | static makeText(text:string,duration:number){ 203 | return new ToastObject(text, duration); 204 | } 205 | 206 | /** 207 | * 208 | * 显示一个吐司 209 | * @param text 文本 210 | * @param duration 时长 211 | */ 212 | static showText(text:string,duration:number){ 213 | Toast.makeText(text, duration).show(); 214 | } 215 | 216 | } 217 | -------------------------------------------------------------------------------- /chat_client/assets/scripts/utils/Toast.ts.meta: -------------------------------------------------------------------------------- 1 | { 2 | "ver": "1.0.5", 3 | "uuid": "f23dac96-b7dd-464b-bf5d-0b200beb2146", 4 | "isPlugin": false, 5 | "loadPluginInWeb": true, 6 | "loadPluginInNative": true, 7 | "loadPluginInEditor": false, 8 | "subMetas": {} 9 | } -------------------------------------------------------------------------------- /chat_client/assets/textures.meta: -------------------------------------------------------------------------------- 1 | { 2 | "ver": "1.0.1", 3 | "uuid": "de131051-8343-4a4b-bec9-72993c522935", 4 | "subMetas": {} 5 | } -------------------------------------------------------------------------------- /chat_client/assets/textures/bg.meta: -------------------------------------------------------------------------------- 1 | { 2 | "ver": "1.0.1", 3 | "uuid": "0d6c74e4-956f-45e2-a05f-997847938b0c", 4 | "subMetas": {} 5 | } -------------------------------------------------------------------------------- /chat_client/assets/textures/bg/bg1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/allknowboy/cocoscreator_chat/ceda54c8de6a5940079434a9eb52c1a57767826c/chat_client/assets/textures/bg/bg1.png -------------------------------------------------------------------------------- /chat_client/assets/textures/bg/bg1.png.meta: -------------------------------------------------------------------------------- 1 | { 2 | "ver": "1.0.0", 3 | "uuid": "c56ea067-8b73-4026-8298-647563532926", 4 | "type": "sprite", 5 | "wrapMode": "clamp", 6 | "filterMode": "bilinear", 7 | "subMetas": { 8 | "bg1": { 9 | "ver": "1.0.3", 10 | "uuid": "806b88f6-e41a-4b7c-a2b2-6ebe74b8f484", 11 | "rawTextureUuid": "c56ea067-8b73-4026-8298-647563532926", 12 | "trimType": "custom", 13 | "trimThreshold": 1, 14 | "rotated": false, 15 | "offsetX": 0, 16 | "offsetY": 0, 17 | "trimX": 0, 18 | "trimY": 0, 19 | "width": 1643, 20 | "height": 804, 21 | "rawWidth": 1643, 22 | "rawHeight": 804, 23 | "borderTop": 0, 24 | "borderBottom": 0, 25 | "borderLeft": 0, 26 | "borderRight": 0, 27 | "subMetas": {} 28 | } 29 | } 30 | } -------------------------------------------------------------------------------- /chat_client/assets/textures/blue.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/allknowboy/cocoscreator_chat/ceda54c8de6a5940079434a9eb52c1a57767826c/chat_client/assets/textures/blue.png -------------------------------------------------------------------------------- /chat_client/assets/textures/blue.png.meta: -------------------------------------------------------------------------------- 1 | { 2 | "ver": "1.0.0", 3 | "uuid": "dae7dba5-ec91-4edd-8b8c-5e6f196014cb", 4 | "type": "sprite", 5 | "wrapMode": "clamp", 6 | "filterMode": "bilinear", 7 | "subMetas": { 8 | "blue": { 9 | "ver": "1.0.3", 10 | "uuid": "afb1397b-d55c-453d-b603-07e8c60b1caf", 11 | "rawTextureUuid": "dae7dba5-ec91-4edd-8b8c-5e6f196014cb", 12 | "trimType": "custom", 13 | "trimThreshold": 1, 14 | "rotated": false, 15 | "offsetX": 0, 16 | "offsetY": 0, 17 | "trimX": 0, 18 | "trimY": 0, 19 | "width": 48, 20 | "height": 48, 21 | "rawWidth": 48, 22 | "rawHeight": 48, 23 | "borderTop": 6, 24 | "borderBottom": 9, 25 | "borderLeft": 8, 26 | "borderRight": 8, 27 | "subMetas": {} 28 | } 29 | } 30 | } -------------------------------------------------------------------------------- /chat_client/assets/textures/green.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/allknowboy/cocoscreator_chat/ceda54c8de6a5940079434a9eb52c1a57767826c/chat_client/assets/textures/green.png -------------------------------------------------------------------------------- /chat_client/assets/textures/green.png.meta: -------------------------------------------------------------------------------- 1 | { 2 | "ver": "1.0.0", 3 | "uuid": "a4775f84-84a1-499e-9365-4d1169cadf7a", 4 | "type": "sprite", 5 | "wrapMode": "clamp", 6 | "filterMode": "bilinear", 7 | "subMetas": { 8 | "green": { 9 | "ver": "1.0.3", 10 | "uuid": "89c91f85-34b2-4c32-b0cc-a14e7c8b96f8", 11 | "rawTextureUuid": "a4775f84-84a1-499e-9365-4d1169cadf7a", 12 | "trimType": "custom", 13 | "trimThreshold": 1, 14 | "rotated": false, 15 | "offsetX": 0, 16 | "offsetY": 0, 17 | "trimX": 0, 18 | "trimY": 0, 19 | "width": 48, 20 | "height": 48, 21 | "rawWidth": 48, 22 | "rawHeight": 48, 23 | "borderTop": 8, 24 | "borderBottom": 8, 25 | "borderLeft": 8, 26 | "borderRight": 8, 27 | "subMetas": {} 28 | } 29 | } 30 | } -------------------------------------------------------------------------------- /chat_client/assets/textures/green_pressed.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/allknowboy/cocoscreator_chat/ceda54c8de6a5940079434a9eb52c1a57767826c/chat_client/assets/textures/green_pressed.png -------------------------------------------------------------------------------- /chat_client/assets/textures/green_pressed.png.meta: -------------------------------------------------------------------------------- 1 | { 2 | "ver": "1.0.0", 3 | "uuid": "e1e266a8-8aec-4cff-8795-fb2f5ca5b594", 4 | "type": "sprite", 5 | "wrapMode": "clamp", 6 | "filterMode": "bilinear", 7 | "subMetas": { 8 | "green_pressed": { 9 | "ver": "1.0.3", 10 | "uuid": "c6b0607b-9440-4082-b1e6-27e10730ed92", 11 | "rawTextureUuid": "e1e266a8-8aec-4cff-8795-fb2f5ca5b594", 12 | "trimType": "custom", 13 | "trimThreshold": 1, 14 | "rotated": false, 15 | "offsetX": 0, 16 | "offsetY": 0, 17 | "trimX": 0, 18 | "trimY": 0, 19 | "width": 48, 20 | "height": 48, 21 | "rawWidth": 48, 22 | "rawHeight": 48, 23 | "borderTop": 5, 24 | "borderBottom": 5, 25 | "borderLeft": 5, 26 | "borderRight": 5, 27 | "subMetas": {} 28 | } 29 | } 30 | } -------------------------------------------------------------------------------- /chat_client/assets/textures/grey.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/allknowboy/cocoscreator_chat/ceda54c8de6a5940079434a9eb52c1a57767826c/chat_client/assets/textures/grey.png -------------------------------------------------------------------------------- /chat_client/assets/textures/grey.png.meta: -------------------------------------------------------------------------------- 1 | { 2 | "ver": "1.0.0", 3 | "uuid": "3288485c-0b1b-404f-8983-6b5b26dadf48", 4 | "type": "sprite", 5 | "wrapMode": "clamp", 6 | "filterMode": "bilinear", 7 | "subMetas": { 8 | "grey": { 9 | "ver": "1.0.3", 10 | "uuid": "1a021a97-43f7-4d97-8651-542b5f7249e6", 11 | "rawTextureUuid": "3288485c-0b1b-404f-8983-6b5b26dadf48", 12 | "trimType": "custom", 13 | "trimThreshold": 1, 14 | "rotated": false, 15 | "offsetX": 0, 16 | "offsetY": 0, 17 | "trimX": 0, 18 | "trimY": 0, 19 | "width": 48, 20 | "height": 48, 21 | "rawWidth": 48, 22 | "rawHeight": 48, 23 | "borderTop": 7, 24 | "borderBottom": 9, 25 | "borderLeft": 7, 26 | "borderRight": 7, 27 | "subMetas": {} 28 | } 29 | } 30 | } -------------------------------------------------------------------------------- /chat_client/assets/textures/head.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/allknowboy/cocoscreator_chat/ceda54c8de6a5940079434a9eb52c1a57767826c/chat_client/assets/textures/head.jpg -------------------------------------------------------------------------------- /chat_client/assets/textures/head.jpg.meta: -------------------------------------------------------------------------------- 1 | { 2 | "ver": "1.0.0", 3 | "uuid": "e1fcfebf-1ff7-40dc-9df8-335327904954", 4 | "type": "sprite", 5 | "wrapMode": "clamp", 6 | "filterMode": "bilinear", 7 | "subMetas": { 8 | "head": { 9 | "ver": "1.0.3", 10 | "uuid": "b29db6a7-7857-4fa6-a5ff-e0f3c26069ac", 11 | "rawTextureUuid": "e1fcfebf-1ff7-40dc-9df8-335327904954", 12 | "trimType": "custom", 13 | "trimThreshold": 1, 14 | "rotated": false, 15 | "offsetX": 0, 16 | "offsetY": 0, 17 | "trimX": 0, 18 | "trimY": 0, 19 | "width": 100, 20 | "height": 100, 21 | "rawWidth": 100, 22 | "rawHeight": 100, 23 | "borderTop": 0, 24 | "borderBottom": 0, 25 | "borderLeft": 0, 26 | "borderRight": 0, 27 | "subMetas": {} 28 | } 29 | } 30 | } -------------------------------------------------------------------------------- /chat_client/assets/textures/msg_tip_left.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/allknowboy/cocoscreator_chat/ceda54c8de6a5940079434a9eb52c1a57767826c/chat_client/assets/textures/msg_tip_left.png -------------------------------------------------------------------------------- /chat_client/assets/textures/msg_tip_left.png.meta: -------------------------------------------------------------------------------- 1 | { 2 | "ver": "1.0.0", 3 | "uuid": "f35feeef-afc6-4319-b8f1-949e9ccec1d6", 4 | "type": "sprite", 5 | "wrapMode": "clamp", 6 | "filterMode": "bilinear", 7 | "subMetas": { 8 | "msg_tip_left": { 9 | "ver": "1.0.3", 10 | "uuid": "8455a556-e16c-4400-8f84-798e952f8168", 11 | "rawTextureUuid": "f35feeef-afc6-4319-b8f1-949e9ccec1d6", 12 | "trimType": "custom", 13 | "trimThreshold": 1, 14 | "rotated": false, 15 | "offsetX": 0, 16 | "offsetY": 0, 17 | "trimX": 0, 18 | "trimY": 0, 19 | "width": 121, 20 | "height": 87, 21 | "rawWidth": 121, 22 | "rawHeight": 87, 23 | "borderTop": 39, 24 | "borderBottom": 31, 25 | "borderLeft": 44, 26 | "borderRight": 61, 27 | "subMetas": {} 28 | } 29 | } 30 | } -------------------------------------------------------------------------------- /chat_client/assets/textures/msg_tip_right.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/allknowboy/cocoscreator_chat/ceda54c8de6a5940079434a9eb52c1a57767826c/chat_client/assets/textures/msg_tip_right.png -------------------------------------------------------------------------------- /chat_client/assets/textures/msg_tip_right.png.meta: -------------------------------------------------------------------------------- 1 | { 2 | "ver": "1.0.0", 3 | "uuid": "f1783e7f-4001-446c-a5f9-bddf300d7525", 4 | "type": "sprite", 5 | "wrapMode": "clamp", 6 | "filterMode": "bilinear", 7 | "subMetas": { 8 | "msg_tip_right": { 9 | "ver": "1.0.3", 10 | "uuid": "88245198-d644-45c6-8157-9730bcbfac7b", 11 | "rawTextureUuid": "f1783e7f-4001-446c-a5f9-bddf300d7525", 12 | "trimType": "custom", 13 | "trimThreshold": 1, 14 | "rotated": false, 15 | "offsetX": 0, 16 | "offsetY": 0, 17 | "trimX": 0, 18 | "trimY": 0, 19 | "width": 121, 20 | "height": 87, 21 | "rawWidth": 121, 22 | "rawHeight": 87, 23 | "borderTop": 39, 24 | "borderBottom": 31, 25 | "borderLeft": 58, 26 | "borderRight": 49, 27 | "subMetas": {} 28 | } 29 | } 30 | } -------------------------------------------------------------------------------- /chat_client/assets/textures/normal_board.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/allknowboy/cocoscreator_chat/ceda54c8de6a5940079434a9eb52c1a57767826c/chat_client/assets/textures/normal_board.png -------------------------------------------------------------------------------- /chat_client/assets/textures/normal_board.png.meta: -------------------------------------------------------------------------------- 1 | { 2 | "ver": "1.0.0", 3 | "uuid": "7d559be0-f2d2-4a3a-97de-7e3fce2a7f6d", 4 | "type": "sprite", 5 | "wrapMode": "clamp", 6 | "filterMode": "bilinear", 7 | "subMetas": { 8 | "normal_board": { 9 | "ver": "1.0.3", 10 | "uuid": "2fc145fe-581a-44c3-84aa-a7ca424b65a7", 11 | "rawTextureUuid": "7d559be0-f2d2-4a3a-97de-7e3fce2a7f6d", 12 | "trimType": "custom", 13 | "trimThreshold": 1, 14 | "rotated": false, 15 | "offsetX": 0, 16 | "offsetY": 0, 17 | "trimX": 0, 18 | "trimY": 0, 19 | "width": 44, 20 | "height": 47, 21 | "rawWidth": 44, 22 | "rawHeight": 47, 23 | "borderTop": 16, 24 | "borderBottom": 19, 25 | "borderLeft": 18, 26 | "borderRight": 17, 27 | "subMetas": {} 28 | } 29 | } 30 | } -------------------------------------------------------------------------------- /chat_client/assets/textures/white_inlay.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/allknowboy/cocoscreator_chat/ceda54c8de6a5940079434a9eb52c1a57767826c/chat_client/assets/textures/white_inlay.png -------------------------------------------------------------------------------- /chat_client/assets/textures/white_inlay.png.meta: -------------------------------------------------------------------------------- 1 | { 2 | "ver": "1.0.0", 3 | "uuid": "ac97d53a-82ea-4ac9-b3b9-f246aa85f8c5", 4 | "type": "sprite", 5 | "wrapMode": "clamp", 6 | "filterMode": "bilinear", 7 | "subMetas": { 8 | "white_inlay": { 9 | "ver": "1.0.3", 10 | "uuid": "6c62a9ed-2dd7-40a7-a427-cf36b17e7d21", 11 | "rawTextureUuid": "ac97d53a-82ea-4ac9-b3b9-f246aa85f8c5", 12 | "trimType": "custom", 13 | "trimThreshold": 1, 14 | "rotated": false, 15 | "offsetX": 0, 16 | "offsetY": 0, 17 | "trimX": 0, 18 | "trimY": 0, 19 | "width": 44, 20 | "height": 44, 21 | "rawWidth": 44, 22 | "rawHeight": 44, 23 | "borderTop": 12, 24 | "borderBottom": 10, 25 | "borderLeft": 6, 26 | "borderRight": 9, 27 | "subMetas": {} 28 | } 29 | } 30 | } -------------------------------------------------------------------------------- /chat_client/assets/textures/yellow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/allknowboy/cocoscreator_chat/ceda54c8de6a5940079434a9eb52c1a57767826c/chat_client/assets/textures/yellow.png -------------------------------------------------------------------------------- /chat_client/assets/textures/yellow.png.meta: -------------------------------------------------------------------------------- 1 | { 2 | "ver": "1.0.0", 3 | "uuid": "eaa3c103-eff0-43d8-9064-fa2833e0a9af", 4 | "type": "sprite", 5 | "wrapMode": "clamp", 6 | "filterMode": "bilinear", 7 | "subMetas": { 8 | "yellow": { 9 | "ver": "1.0.3", 10 | "uuid": "5a0cf95d-90b9-4d41-9748-9b94bfcbf351", 11 | "rawTextureUuid": "eaa3c103-eff0-43d8-9064-fa2833e0a9af", 12 | "trimType": "custom", 13 | "trimThreshold": 1, 14 | "rotated": false, 15 | "offsetX": 0, 16 | "offsetY": 0, 17 | "trimX": 0, 18 | "trimY": 0, 19 | "width": 48, 20 | "height": 48, 21 | "rawWidth": 48, 22 | "rawHeight": 48, 23 | "borderTop": 0, 24 | "borderBottom": 0, 25 | "borderLeft": 0, 26 | "borderRight": 0, 27 | "subMetas": {} 28 | } 29 | } 30 | } -------------------------------------------------------------------------------- /chat_client/jsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "target": "es6", 4 | "module": "commonjs", 5 | "experimentalDecorators": true 6 | }, 7 | "exclude": [ 8 | "node_modules", 9 | ".vscode", 10 | "library", 11 | "local", 12 | "settings", 13 | "temp" 14 | ] 15 | } -------------------------------------------------------------------------------- /chat_client/package-lock.json: -------------------------------------------------------------------------------- 1 | { 2 | "requires": true, 3 | "lockfileVersion": 1, 4 | "dependencies": { 5 | "@types/node": { 6 | "version": "9.4.6", 7 | "resolved": "http://registry.npm.taobao.org/@types/node/download/@types/node-9.4.6.tgz", 8 | "integrity": "sha1-2Bdthk7kh1PQU3g+TkY67Ia42C4=" 9 | }, 10 | "@types/socket.io": { 11 | "version": "1.4.31", 12 | "resolved": "http://registry.npm.taobao.org/@types/socket.io/download/@types/socket.io-1.4.31.tgz", 13 | "integrity": "sha1-epKFGKNVFvzNkEMflFOO0/3auhk=", 14 | "requires": { 15 | "@types/node": "9.4.6" 16 | } 17 | } 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /chat_client/project.json: -------------------------------------------------------------------------------- 1 | { 2 | "engine": "cocos2d-html5", 3 | "packages": "packages" 4 | } -------------------------------------------------------------------------------- /chat_client/settings/builder.json: -------------------------------------------------------------------------------- 1 | { 2 | "excludeScenes": [], 3 | "orientation": { 4 | "landscapeLeft": true, 5 | "landscapeRight": true, 6 | "portrait": false, 7 | "upsideDown": false 8 | }, 9 | "packageName": "org.cocos2d.helloworld", 10 | "startScene": "2d2f792f-a40c-49bb-a189-ed176a246e49", 11 | "title": "hello_world", 12 | "webOrientation": "auto" 13 | } -------------------------------------------------------------------------------- /chat_client/settings/builder.panel.json: -------------------------------------------------------------------------------- 1 | { 2 | "excludeScenes": [], 3 | "packageName": "org.cocos2d.helloworld", 4 | "platform": "web-mobile", 5 | "startScene": "2d2f792f-a40c-49bb-a189-ed176a246e49", 6 | "title": "HelloWorld" 7 | } -------------------------------------------------------------------------------- /chat_client/settings/project.json: -------------------------------------------------------------------------------- 1 | { 2 | "cocos-analytics": { 3 | "appID": "13798", 4 | "appSecret": "959b3ac0037d0f3c2fdce94f8421a9b2", 5 | "channel": "", 6 | "enable": false, 7 | "version": "" 8 | }, 9 | "collision-matrix": [ 10 | [ 11 | true 12 | ] 13 | ], 14 | "design-resolution-height": 640, 15 | "design-resolution-width": 960, 16 | "excluded-modules": [], 17 | "fit-height": true, 18 | "fit-width": false, 19 | "group-list": [ 20 | "default" 21 | ], 22 | "simulator-orientation": false, 23 | "simulator-resolution": { 24 | "height": 640, 25 | "width": 960 26 | }, 27 | "start-scene": "77b2a6f9-40ac-4aa5-bde9-2ba95d1ac264", 28 | "use-customize-simulator": false, 29 | "use-project-simulator-setting": false 30 | } -------------------------------------------------------------------------------- /chat_client/template-banner.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/allknowboy/cocoscreator_chat/ceda54c8de6a5940079434a9eb52c1a57767826c/chat_client/template-banner.png -------------------------------------------------------------------------------- /chat_client/template.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "TEMPLATES.helloworld-ts.name", 3 | "desc": "TEMPLATES.helloworld-ts.desc", 4 | "banner": "template-banner.png" 5 | } -------------------------------------------------------------------------------- /chat_client/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "module": "commonjs", 4 | "lib": [ "dom", "es5", "es2015.promise" ], 5 | "target": "es5", 6 | "allowJs": true, 7 | "experimentalDecorators": true, 8 | "skipLibCheck": true 9 | }, 10 | "exclude": [ 11 | "node_modules", 12 | "library", 13 | "local", 14 | "temp", 15 | "build", 16 | "settings" 17 | ] 18 | } 19 | -------------------------------------------------------------------------------- /chat_server/DbClient.js: -------------------------------------------------------------------------------- 1 | const Sequelize = require('sequelize'); 2 | 3 | const sequelize = new Sequelize('super', 'root', '123123', { 4 | host: '127.0.0.1', 5 | port: 3306, 6 | //dialect: 'mysql', 7 | dialect: 'sqlite', 8 | operatorsAliases: false, 9 | pool: { 10 | max: 5, 11 | min: 0, 12 | acquire: 30000, 13 | idle: 10000 14 | }, 15 | //sqlite只需要这个参数 16 | storage:'./db/db.sqlite' 17 | }); 18 | 19 | sequelize.authenticate().then(() => { 20 | console.log('数据库连接成功'); 21 | }).catch(err => { 22 | console.error('数据库连接失败', err); 23 | }); 24 | 25 | module.exports = sequelize; -------------------------------------------------------------------------------- /chat_server/app.js: -------------------------------------------------------------------------------- 1 | const express = require('express'); 2 | const app = express(); 3 | const http = require('http').Server(app); 4 | const sio = require('socket.io')(http); 5 | const _ = require('underscore'); 6 | 7 | const User = require('./models/User'); 8 | const Message = require('./models/Message'); 9 | 10 | //设置跨域访问 11 | app.all('*', function(req, res, next) { 12 | res.header("Access-Control-Allow-Origin", "*"); 13 | res.header("Access-Control-Allow-Headers", "X-Requested-With"); 14 | res.header("Access-Control-Allow-Methods","PUT,POST,GET,DELETE,OPTIONS"); 15 | res.header("X-Powered-By",' 3.2.1') 16 | res.header("Content-Type", "application/json;charset=utf-8"); 17 | next(); 18 | }); 19 | 20 | 21 | app.get('/',(req,res)=>{ 22 | res.send('

Hello world

'); 23 | }); 24 | 25 | http.listen(3000, ()=>{ 26 | console.log('listening on *:3000'); 27 | }); 28 | 29 | 30 | /**********************关于聊天的相关操作*************************/ 31 | //保存用户的数组 32 | var userList = {}; 33 | //接收客户端的连接 34 | sio.on('connection',socket=>{ 35 | //注册 36 | socket.on('register',registerObj=>{ 37 | User.findOrCreate({where: {account: registerObj.name}, defaults: {password:registerObj.password}}) 38 | .spread((user, created) => { 39 | // console.log(user.get({ 40 | // plain: true 41 | // })) 42 | // console.log(created) 43 | socket.uid = user.get('uid'); 44 | if(created){ 45 | //发送当前用户列表信息 46 | socket.emit('registerInfo','注册成功'); 47 | } 48 | else{ 49 | //发送当前用户列表信息 50 | socket.emit('registerInfo','用户名已经存在'); 51 | } 52 | }) 53 | }); 54 | 55 | 56 | 57 | //登录 58 | socket.on('login',(user)=>{ 59 | console.log('login'); 60 | console.log(user); 61 | 62 | User.findOne({where: {account: user.name,password:user.password}}).then(user=>{ 63 | console.log(user); 64 | if(user){ 65 | socket.uid = user.get('uid'); 66 | } 67 | else{ 68 | //发送当前用户列表信息 69 | socket.emit('loginInfo','登录失败'); 70 | return; 71 | } 72 | }); 73 | 74 | user.id = socket.id; 75 | if(!userList[user.channel]){ 76 | userList[user.channel]=[]; 77 | } 78 | userList[user.channel].push(user); 79 | socket.join(user.channel); 80 | socket.channel = user.channel; 81 | //群发用户列表 82 | sio.to(user.channel).emit('userList',userList[user.channel]); 83 | //发送当前用户列表信息 84 | socket.emit('userInfo',user); 85 | //除自己外广播用户登录信息 86 | socket.broadcast.to(user.channel).emit('loginInfo',user.name+"上线了。"); 87 | }); 88 | //客户端断开 89 | socket.on('disconnect',()=>{ 90 | //查出当前离开的用户 91 | //console.log(socket.channel); 92 | if(socket.channel){ 93 | socket.leave(socket.channel,()=>{ 94 | //用户离开频道的回调 95 | }) 96 | } 97 | 98 | let user = _.findWhere(userList[socket.channel],{id:socket.id}); 99 | if(user){ 100 | //剔除当前离线用户 101 | userList[socket.channel] = _.without(userList[socket.channel],user); 102 | //发送当前用户列表信息 103 | sio.to(socket.channel).emit('userList',userList[socket.channel]); 104 | //除自己外广播用户断线信息 105 | socket.broadcast.to(user.channel).emit('loginInfo',user.name+"下线了。"); 106 | 107 | //删除当前的频道 108 | if(userList[socket.channel].length==0){ 109 | delete userList[socket.channel]; 110 | delete socket.channel; 111 | } 112 | } 113 | }); 114 | //群发事件 115 | socket.on('toAll',function(msgObj){ 116 | Message.create({ 117 | fromuid:socket.uid, 118 | message:msgObj.msg, 119 | }).then(value=>{ 120 | console.log(`插入数据 ${value}`); 121 | }); 122 | 123 | console.log(`++++++++++++++${msgObj.from.channel}+++++++++++++++`); 124 | socket.broadcast.to(msgObj.from.channel).emit('toAll',msgObj); 125 | }); 126 | //单发事件 127 | socket.on('toOne',function(msgObj){ 128 | let toSocket = _.findWhere(sio.sockets.sockets,{id:msgObj.to}); 129 | toSocket.emit('toOne', msgObj); 130 | }); 131 | 132 | /** 133 | * 心跳包 134 | */ 135 | socket.on('game_ping',function(data){ 136 | socket.emit('game_pong'); 137 | }); 138 | }); 139 | -------------------------------------------------------------------------------- /chat_server/db/db.sqlite: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/allknowboy/cocoscreator_chat/ceda54c8de6a5940079434a9eb52c1a57767826c/chat_server/db/db.sqlite -------------------------------------------------------------------------------- /chat_server/models/Message.js: -------------------------------------------------------------------------------- 1 | const Sequelize = require('sequelize'); 2 | const dbClient = require('../DbClient'); 3 | 4 | //定义表结构 5 | let Message = dbClient.define('tb_messages', { 6 | uid:{type: Sequelize.INTEGER, autoIncrement: true, primaryKey: true}, 7 | fromuid:{type: Sequelize.INTEGER , allowNull:true}, 8 | message:{type:Sequelize.STRING(1024) , allowNull:false}, 9 | touid:{type:Sequelize.STRING , defaultValue:""} 10 | }); 11 | 12 | //没有表的时候创建表 13 | Message.sync(); 14 | 15 | module.exports = Message; -------------------------------------------------------------------------------- /chat_server/models/User.js: -------------------------------------------------------------------------------- 1 | const Sequelize = require('sequelize'); 2 | const dbClient = require('../DbClient'); 3 | 4 | //定义表结构 5 | let User = dbClient.define('tb_users', { 6 | uid:{type: Sequelize.INTEGER, autoIncrement: true, primaryKey: true}, 7 | account:{type:Sequelize.STRING , allowNull:false}, 8 | password:{type:Sequelize.STRING , allowNull:false}, 9 | imgurl:{type:Sequelize.STRING , }, 10 | channel:{type:Sequelize.STRING , }, 11 | age:{type:Sequelize.INTEGER, defaultValue:0}, 12 | }); 13 | 14 | //没有表的时候创建表 15 | User.sync(); 16 | 17 | module.exports = User; -------------------------------------------------------------------------------- /chat_server/package-lock.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "chat_server", 3 | "version": "1.0.0", 4 | "lockfileVersion": 1, 5 | "requires": true, 6 | "dependencies": { 7 | "accepts": { 8 | "version": "1.3.5", 9 | "resolved": "http://registry.npm.taobao.org/accepts/download/accepts-1.3.5.tgz", 10 | "integrity": "sha1-63d99gEXI6OxTopywIBcjoZ0a9I=", 11 | "requires": { 12 | "mime-types": "2.1.18", 13 | "negotiator": "0.6.1" 14 | } 15 | }, 16 | "after": { 17 | "version": "0.8.2", 18 | "resolved": "http://registry.npm.taobao.org/after/download/after-0.8.2.tgz", 19 | "integrity": "sha1-/ts5T58OAqqXaOcCvaI7UF+ufh8=" 20 | }, 21 | "array-flatten": { 22 | "version": "1.1.1", 23 | "resolved": "http://registry.npm.taobao.org/array-flatten/download/array-flatten-1.1.1.tgz", 24 | "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=" 25 | }, 26 | "arraybuffer.slice": { 27 | "version": "0.0.7", 28 | "resolved": "http://registry.npm.taobao.org/arraybuffer.slice/download/arraybuffer.slice-0.0.7.tgz", 29 | "integrity": "sha1-O7xCdd1YTMGxCAm4nU6LY6aednU=" 30 | }, 31 | "async-limiter": { 32 | "version": "1.0.0", 33 | "resolved": "http://registry.npm.taobao.org/async-limiter/download/async-limiter-1.0.0.tgz", 34 | "integrity": "sha1-ePrtjD0HSrgfIrTphdeehzj3IPg=" 35 | }, 36 | "backo2": { 37 | "version": "1.0.2", 38 | "resolved": "http://registry.npm.taobao.org/backo2/download/backo2-1.0.2.tgz", 39 | "integrity": "sha1-MasayLEpNjRj41s+u2n038+6eUc=" 40 | }, 41 | "base64-arraybuffer": { 42 | "version": "0.1.5", 43 | "resolved": "http://registry.npm.taobao.org/base64-arraybuffer/download/base64-arraybuffer-0.1.5.tgz", 44 | "integrity": "sha1-c5JncZI7Whl0etZmqlzUv5xunOg=" 45 | }, 46 | "base64id": { 47 | "version": "1.0.0", 48 | "resolved": "http://registry.npm.taobao.org/base64id/download/base64id-1.0.0.tgz", 49 | "integrity": "sha1-R2iMuZu2gE8OBtPnY7HDLlfY5rY=" 50 | }, 51 | "better-assert": { 52 | "version": "1.0.2", 53 | "resolved": "http://registry.npm.taobao.org/better-assert/download/better-assert-1.0.2.tgz", 54 | "integrity": "sha1-QIZrnhueC1W0gYlDEeaPr/rrxSI=", 55 | "requires": { 56 | "callsite": "1.0.0" 57 | } 58 | }, 59 | "blob": { 60 | "version": "0.0.4", 61 | "resolved": "http://registry.npm.taobao.org/blob/download/blob-0.0.4.tgz", 62 | "integrity": "sha1-vPEwUspURj8w+fx+lbmkdjCpSSE=" 63 | }, 64 | "body-parser": { 65 | "version": "1.18.2", 66 | "resolved": "http://registry.npm.taobao.org/body-parser/download/body-parser-1.18.2.tgz", 67 | "integrity": "sha1-h2eKGdhLR9hZuDGZvVm84iKxBFQ=", 68 | "requires": { 69 | "bytes": "3.0.0", 70 | "content-type": "1.0.4", 71 | "debug": "2.6.9", 72 | "depd": "1.1.2", 73 | "http-errors": "1.6.2", 74 | "iconv-lite": "0.4.19", 75 | "on-finished": "2.3.0", 76 | "qs": "6.5.1", 77 | "raw-body": "2.3.2", 78 | "type-is": "1.6.16" 79 | } 80 | }, 81 | "bytes": { 82 | "version": "3.0.0", 83 | "resolved": "http://registry.npm.taobao.org/bytes/download/bytes-3.0.0.tgz", 84 | "integrity": "sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg=" 85 | }, 86 | "callsite": { 87 | "version": "1.0.0", 88 | "resolved": "http://registry.npm.taobao.org/callsite/download/callsite-1.0.0.tgz", 89 | "integrity": "sha1-KAOY5dZkvXQDi28JBRU+borxvCA=" 90 | }, 91 | "component-bind": { 92 | "version": "1.0.0", 93 | "resolved": "http://registry.npm.taobao.org/component-bind/download/component-bind-1.0.0.tgz", 94 | "integrity": "sha1-AMYIq33Nk4l8AAllGx06jh5zu9E=" 95 | }, 96 | "component-emitter": { 97 | "version": "1.2.1", 98 | "resolved": "http://registry.npm.taobao.org/component-emitter/download/component-emitter-1.2.1.tgz", 99 | "integrity": "sha1-E3kY1teCg/ffemt8WmPhQOaUJeY=" 100 | }, 101 | "component-inherit": { 102 | "version": "0.0.3", 103 | "resolved": "http://registry.npm.taobao.org/component-inherit/download/component-inherit-0.0.3.tgz", 104 | "integrity": "sha1-ZF/ErfWLcrZJ1crmUTVhnbJv8UM=" 105 | }, 106 | "content-disposition": { 107 | "version": "0.5.2", 108 | "resolved": "http://registry.npm.taobao.org/content-disposition/download/content-disposition-0.5.2.tgz", 109 | "integrity": "sha1-DPaLud318r55YcOoUXjLhdunjLQ=" 110 | }, 111 | "content-type": { 112 | "version": "1.0.4", 113 | "resolved": "http://registry.npm.taobao.org/content-type/download/content-type-1.0.4.tgz", 114 | "integrity": "sha1-4TjMdeBAxyexlm/l5fjJruJW/js=" 115 | }, 116 | "cookie": { 117 | "version": "0.3.1", 118 | "resolved": "http://registry.npm.taobao.org/cookie/download/cookie-0.3.1.tgz", 119 | "integrity": "sha1-5+Ch+e9DtMi6klxcWpboBtFoc7s=" 120 | }, 121 | "cookie-signature": { 122 | "version": "1.0.6", 123 | "resolved": "http://registry.npm.taobao.org/cookie-signature/download/cookie-signature-1.0.6.tgz", 124 | "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=" 125 | }, 126 | "debug": { 127 | "version": "2.6.9", 128 | "resolved": "http://registry.npm.taobao.org/debug/download/debug-2.6.9.tgz", 129 | "integrity": "sha1-XRKFFd8TT/Mn6QpMk/Tgd6U2NB8=", 130 | "requires": { 131 | "ms": "2.0.0" 132 | } 133 | }, 134 | "depd": { 135 | "version": "1.1.2", 136 | "resolved": "http://registry.npm.taobao.org/depd/download/depd-1.1.2.tgz", 137 | "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=" 138 | }, 139 | "destroy": { 140 | "version": "1.0.4", 141 | "resolved": "http://registry.npm.taobao.org/destroy/download/destroy-1.0.4.tgz", 142 | "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=" 143 | }, 144 | "ee-first": { 145 | "version": "1.1.1", 146 | "resolved": "http://registry.npm.taobao.org/ee-first/download/ee-first-1.1.1.tgz", 147 | "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=" 148 | }, 149 | "encodeurl": { 150 | "version": "1.0.2", 151 | "resolved": "http://registry.npm.taobao.org/encodeurl/download/encodeurl-1.0.2.tgz", 152 | "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=" 153 | }, 154 | "engine.io": { 155 | "version": "3.1.5", 156 | "resolved": "http://registry.npm.taobao.org/engine.io/download/engine.io-3.1.5.tgz", 157 | "integrity": "sha1-Dn751pDrCzVZfx1K0Comyi26OEU=", 158 | "requires": { 159 | "accepts": "1.3.5", 160 | "base64id": "1.0.0", 161 | "cookie": "0.3.1", 162 | "debug": "3.1.0", 163 | "engine.io-parser": "2.1.2", 164 | "uws": "9.14.0", 165 | "ws": "3.3.3" 166 | }, 167 | "dependencies": { 168 | "debug": { 169 | "version": "3.1.0", 170 | "resolved": "http://registry.npm.taobao.org/debug/download/debug-3.1.0.tgz", 171 | "integrity": "sha1-W7WgZyYotkFJVmuhaBnmFRjGcmE=", 172 | "requires": { 173 | "ms": "2.0.0" 174 | } 175 | } 176 | } 177 | }, 178 | "engine.io-client": { 179 | "version": "3.1.5", 180 | "resolved": "http://registry.npm.taobao.org/engine.io-client/download/engine.io-client-3.1.5.tgz", 181 | "integrity": "sha1-hd4XZmVgMn7xgXl49uP4EB3tLEc=", 182 | "requires": { 183 | "component-emitter": "1.2.1", 184 | "component-inherit": "0.0.3", 185 | "debug": "3.1.0", 186 | "engine.io-parser": "2.1.2", 187 | "has-cors": "1.1.0", 188 | "indexof": "0.0.1", 189 | "parseqs": "0.0.5", 190 | "parseuri": "0.0.5", 191 | "ws": "3.3.3", 192 | "xmlhttprequest-ssl": "1.5.5", 193 | "yeast": "0.1.2" 194 | }, 195 | "dependencies": { 196 | "debug": { 197 | "version": "3.1.0", 198 | "resolved": "http://registry.npm.taobao.org/debug/download/debug-3.1.0.tgz", 199 | "integrity": "sha1-W7WgZyYotkFJVmuhaBnmFRjGcmE=", 200 | "requires": { 201 | "ms": "2.0.0" 202 | } 203 | } 204 | } 205 | }, 206 | "engine.io-parser": { 207 | "version": "2.1.2", 208 | "resolved": "http://registry.npm.taobao.org/engine.io-parser/download/engine.io-parser-2.1.2.tgz", 209 | "integrity": "sha1-TA9M/3mq7su9z96maoI8YIVAkZY=", 210 | "requires": { 211 | "after": "0.8.2", 212 | "arraybuffer.slice": "0.0.7", 213 | "base64-arraybuffer": "0.1.5", 214 | "blob": "0.0.4", 215 | "has-binary2": "1.0.2" 216 | } 217 | }, 218 | "escape-html": { 219 | "version": "1.0.3", 220 | "resolved": "http://registry.npm.taobao.org/escape-html/download/escape-html-1.0.3.tgz", 221 | "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=" 222 | }, 223 | "etag": { 224 | "version": "1.8.1", 225 | "resolved": "http://registry.npm.taobao.org/etag/download/etag-1.8.1.tgz", 226 | "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=" 227 | }, 228 | "express": { 229 | "version": "4.16.2", 230 | "resolved": "http://registry.npm.taobao.org/express/download/express-4.16.2.tgz", 231 | "integrity": "sha1-41xt/i1kt9ygpc1PIXgb4ymeB2w=", 232 | "requires": { 233 | "accepts": "1.3.5", 234 | "array-flatten": "1.1.1", 235 | "body-parser": "1.18.2", 236 | "content-disposition": "0.5.2", 237 | "content-type": "1.0.4", 238 | "cookie": "0.3.1", 239 | "cookie-signature": "1.0.6", 240 | "debug": "2.6.9", 241 | "depd": "1.1.2", 242 | "encodeurl": "1.0.2", 243 | "escape-html": "1.0.3", 244 | "etag": "1.8.1", 245 | "finalhandler": "1.1.0", 246 | "fresh": "0.5.2", 247 | "merge-descriptors": "1.0.1", 248 | "methods": "1.1.2", 249 | "on-finished": "2.3.0", 250 | "parseurl": "1.3.2", 251 | "path-to-regexp": "0.1.7", 252 | "proxy-addr": "2.0.3", 253 | "qs": "6.5.1", 254 | "range-parser": "1.2.0", 255 | "safe-buffer": "5.1.1", 256 | "send": "0.16.1", 257 | "serve-static": "1.13.1", 258 | "setprototypeof": "1.1.0", 259 | "statuses": "1.3.1", 260 | "type-is": "1.6.16", 261 | "utils-merge": "1.0.1", 262 | "vary": "1.1.2" 263 | } 264 | }, 265 | "finalhandler": { 266 | "version": "1.1.0", 267 | "resolved": "http://registry.npm.taobao.org/finalhandler/download/finalhandler-1.1.0.tgz", 268 | "integrity": "sha1-zgtoVbRYU+eRsvzGgARtiCU91/U=", 269 | "requires": { 270 | "debug": "2.6.9", 271 | "encodeurl": "1.0.2", 272 | "escape-html": "1.0.3", 273 | "on-finished": "2.3.0", 274 | "parseurl": "1.3.2", 275 | "statuses": "1.3.1", 276 | "unpipe": "1.0.0" 277 | } 278 | }, 279 | "forwarded": { 280 | "version": "0.1.2", 281 | "resolved": "http://registry.npm.taobao.org/forwarded/download/forwarded-0.1.2.tgz", 282 | "integrity": "sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ=" 283 | }, 284 | "fresh": { 285 | "version": "0.5.2", 286 | "resolved": "http://registry.npm.taobao.org/fresh/download/fresh-0.5.2.tgz", 287 | "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=" 288 | }, 289 | "has-binary2": { 290 | "version": "1.0.2", 291 | "resolved": "http://registry.npm.taobao.org/has-binary2/download/has-binary2-1.0.2.tgz", 292 | "integrity": "sha1-6D26SfC5vk0CbSc2U1DZ8D9Uvpg=", 293 | "requires": { 294 | "isarray": "2.0.1" 295 | } 296 | }, 297 | "has-cors": { 298 | "version": "1.1.0", 299 | "resolved": "http://registry.npm.taobao.org/has-cors/download/has-cors-1.1.0.tgz", 300 | "integrity": "sha1-XkdHk/fqmEPRu5nCPu9J/xJv/zk=" 301 | }, 302 | "http-errors": { 303 | "version": "1.6.2", 304 | "resolved": "http://registry.npm.taobao.org/http-errors/download/http-errors-1.6.2.tgz", 305 | "integrity": "sha1-CgAsyFcHGSp+eUbO7cERVfYOxzY=", 306 | "requires": { 307 | "depd": "1.1.1", 308 | "inherits": "2.0.3", 309 | "setprototypeof": "1.0.3", 310 | "statuses": "1.3.1" 311 | }, 312 | "dependencies": { 313 | "depd": { 314 | "version": "1.1.1", 315 | "resolved": "http://registry.npm.taobao.org/depd/download/depd-1.1.1.tgz", 316 | "integrity": "sha1-V4O04cRZ8G+lyif5kfPQbnoxA1k=" 317 | }, 318 | "setprototypeof": { 319 | "version": "1.0.3", 320 | "resolved": "http://registry.npm.taobao.org/setprototypeof/download/setprototypeof-1.0.3.tgz", 321 | "integrity": "sha1-ZlZ+NwQ+608E2RvWWMDL77VbjgQ=" 322 | } 323 | } 324 | }, 325 | "iconv-lite": { 326 | "version": "0.4.19", 327 | "resolved": "http://registry.npm.taobao.org/iconv-lite/download/iconv-lite-0.4.19.tgz", 328 | "integrity": "sha1-90aPYBNfXl2tM5nAqBvpoWA6CCs=" 329 | }, 330 | "indexof": { 331 | "version": "0.0.1", 332 | "resolved": "http://registry.npm.taobao.org/indexof/download/indexof-0.0.1.tgz", 333 | "integrity": "sha1-gtwzbSMrkGIXnQWrMpOmYFn9Q10=" 334 | }, 335 | "inherits": { 336 | "version": "2.0.3", 337 | "resolved": "http://registry.npm.taobao.org/inherits/download/inherits-2.0.3.tgz", 338 | "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" 339 | }, 340 | "ipaddr.js": { 341 | "version": "1.6.0", 342 | "resolved": "http://registry.npm.taobao.org/ipaddr.js/download/ipaddr.js-1.6.0.tgz", 343 | "integrity": "sha1-4/o1e3c9phnybpXwSdBVxyeW+Gs=" 344 | }, 345 | "isarray": { 346 | "version": "2.0.1", 347 | "resolved": "http://registry.npm.taobao.org/isarray/download/isarray-2.0.1.tgz", 348 | "integrity": "sha1-o32U7ZzaLVmGXJ92/llu4fM4dB4=" 349 | }, 350 | "media-typer": { 351 | "version": "0.3.0", 352 | "resolved": "http://registry.npm.taobao.org/media-typer/download/media-typer-0.3.0.tgz", 353 | "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=" 354 | }, 355 | "merge-descriptors": { 356 | "version": "1.0.1", 357 | "resolved": "http://registry.npm.taobao.org/merge-descriptors/download/merge-descriptors-1.0.1.tgz", 358 | "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=" 359 | }, 360 | "methods": { 361 | "version": "1.1.2", 362 | "resolved": "http://registry.npm.taobao.org/methods/download/methods-1.1.2.tgz", 363 | "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=" 364 | }, 365 | "mime": { 366 | "version": "1.4.1", 367 | "resolved": "http://registry.npm.taobao.org/mime/download/mime-1.4.1.tgz", 368 | "integrity": "sha1-Eh+evEnjdm8xGnbh+hyAA8SwOqY=" 369 | }, 370 | "mime-db": { 371 | "version": "1.33.0", 372 | "resolved": "http://registry.npm.taobao.org/mime-db/download/mime-db-1.33.0.tgz", 373 | "integrity": "sha1-o0kgUKXLm2NFBUHjnZeI0icng9s=" 374 | }, 375 | "mime-types": { 376 | "version": "2.1.18", 377 | "resolved": "http://registry.npm.taobao.org/mime-types/download/mime-types-2.1.18.tgz", 378 | "integrity": "sha1-bzI/YKg9ERRvgx/xH9ZuL+VQO7g=", 379 | "requires": { 380 | "mime-db": "1.33.0" 381 | } 382 | }, 383 | "ms": { 384 | "version": "2.0.0", 385 | "resolved": "http://registry.npm.taobao.org/ms/download/ms-2.0.0.tgz", 386 | "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" 387 | }, 388 | "negotiator": { 389 | "version": "0.6.1", 390 | "resolved": "http://registry.npm.taobao.org/negotiator/download/negotiator-0.6.1.tgz", 391 | "integrity": "sha1-KzJxhOiZIQEXeyhWP7XnECrNDKk=" 392 | }, 393 | "object-component": { 394 | "version": "0.0.3", 395 | "resolved": "http://registry.npm.taobao.org/object-component/download/object-component-0.0.3.tgz", 396 | "integrity": "sha1-8MaapQ78lbhmwYb0AKM3acsvEpE=" 397 | }, 398 | "on-finished": { 399 | "version": "2.3.0", 400 | "resolved": "http://registry.npm.taobao.org/on-finished/download/on-finished-2.3.0.tgz", 401 | "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=", 402 | "requires": { 403 | "ee-first": "1.1.1" 404 | } 405 | }, 406 | "parseqs": { 407 | "version": "0.0.5", 408 | "resolved": "http://registry.npm.taobao.org/parseqs/download/parseqs-0.0.5.tgz", 409 | "integrity": "sha1-1SCKNzjkZ2bikbouoXNoSSGouJ0=", 410 | "requires": { 411 | "better-assert": "1.0.2" 412 | } 413 | }, 414 | "parseuri": { 415 | "version": "0.0.5", 416 | "resolved": "http://registry.npm.taobao.org/parseuri/download/parseuri-0.0.5.tgz", 417 | "integrity": "sha1-gCBKUNTbt3m/3G6+J3jZDkvOMgo=", 418 | "requires": { 419 | "better-assert": "1.0.2" 420 | } 421 | }, 422 | "parseurl": { 423 | "version": "1.3.2", 424 | "resolved": "http://registry.npm.taobao.org/parseurl/download/parseurl-1.3.2.tgz", 425 | "integrity": "sha1-/CidTtiZMRlGDBViUyYs3I3mW/M=" 426 | }, 427 | "path-to-regexp": { 428 | "version": "0.1.7", 429 | "resolved": "http://registry.npm.taobao.org/path-to-regexp/download/path-to-regexp-0.1.7.tgz", 430 | "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=" 431 | }, 432 | "proxy-addr": { 433 | "version": "2.0.3", 434 | "resolved": "http://registry.npm.taobao.org/proxy-addr/download/proxy-addr-2.0.3.tgz", 435 | "integrity": "sha1-NV8mJQWmIWRrMTCnKOtkfiIFU0E=", 436 | "requires": { 437 | "forwarded": "0.1.2", 438 | "ipaddr.js": "1.6.0" 439 | } 440 | }, 441 | "qs": { 442 | "version": "6.5.1", 443 | "resolved": "http://registry.npm.taobao.org/qs/download/qs-6.5.1.tgz", 444 | "integrity": "sha1-NJzfbu+J7EXBLX1es/wMhwNDptg=" 445 | }, 446 | "range-parser": { 447 | "version": "1.2.0", 448 | "resolved": "http://registry.npm.taobao.org/range-parser/download/range-parser-1.2.0.tgz", 449 | "integrity": "sha1-9JvmtIeJTdxA3MlKMi9hEJLgDV4=" 450 | }, 451 | "raw-body": { 452 | "version": "2.3.2", 453 | "resolved": "http://registry.npm.taobao.org/raw-body/download/raw-body-2.3.2.tgz", 454 | "integrity": "sha1-vNYMd9Prk83gBQKVw/N5OJvIj4k=", 455 | "requires": { 456 | "bytes": "3.0.0", 457 | "http-errors": "1.6.2", 458 | "iconv-lite": "0.4.19", 459 | "unpipe": "1.0.0" 460 | } 461 | }, 462 | "safe-buffer": { 463 | "version": "5.1.1", 464 | "resolved": "http://registry.npm.taobao.org/safe-buffer/download/safe-buffer-5.1.1.tgz", 465 | "integrity": "sha1-iTMSr2myEj3vcfV4iQAWce6yyFM=" 466 | }, 467 | "send": { 468 | "version": "0.16.1", 469 | "resolved": "http://registry.npm.taobao.org/send/download/send-0.16.1.tgz", 470 | "integrity": "sha1-pw4coh0TgsEdDZ9iMd6ygQgNerM=", 471 | "requires": { 472 | "debug": "2.6.9", 473 | "depd": "1.1.2", 474 | "destroy": "1.0.4", 475 | "encodeurl": "1.0.2", 476 | "escape-html": "1.0.3", 477 | "etag": "1.8.1", 478 | "fresh": "0.5.2", 479 | "http-errors": "1.6.2", 480 | "mime": "1.4.1", 481 | "ms": "2.0.0", 482 | "on-finished": "2.3.0", 483 | "range-parser": "1.2.0", 484 | "statuses": "1.3.1" 485 | } 486 | }, 487 | "serve-static": { 488 | "version": "1.13.1", 489 | "resolved": "http://registry.npm.taobao.org/serve-static/download/serve-static-1.13.1.tgz", 490 | "integrity": "sha1-TFfVNASnYdjy58HooYpH2/J4pxk=", 491 | "requires": { 492 | "encodeurl": "1.0.2", 493 | "escape-html": "1.0.3", 494 | "parseurl": "1.3.2", 495 | "send": "0.16.1" 496 | } 497 | }, 498 | "setprototypeof": { 499 | "version": "1.1.0", 500 | "resolved": "http://registry.npm.taobao.org/setprototypeof/download/setprototypeof-1.1.0.tgz", 501 | "integrity": "sha1-0L2FU2iHtv58DYGMuWLZ2RxU5lY=" 502 | }, 503 | "socket.io": { 504 | "version": "2.0.4", 505 | "resolved": "http://registry.npm.taobao.org/socket.io/download/socket.io-2.0.4.tgz", 506 | "integrity": "sha1-waRZDO/4fs8TxyZS8Eb3FrKeYBQ=", 507 | "requires": { 508 | "debug": "2.6.9", 509 | "engine.io": "3.1.5", 510 | "socket.io-adapter": "1.1.1", 511 | "socket.io-client": "2.0.4", 512 | "socket.io-parser": "3.1.3" 513 | } 514 | }, 515 | "socket.io-adapter": { 516 | "version": "1.1.1", 517 | "resolved": "http://registry.npm.taobao.org/socket.io-adapter/download/socket.io-adapter-1.1.1.tgz", 518 | "integrity": "sha1-KoBeihTWNyEk3ZFZrUUC+MsH8Gs=" 519 | }, 520 | "socket.io-client": { 521 | "version": "2.0.4", 522 | "resolved": "http://registry.npm.taobao.org/socket.io-client/download/socket.io-client-2.0.4.tgz", 523 | "integrity": "sha1-CRilUkBtxeVAs4Dc2Xr8SmQzL44=", 524 | "requires": { 525 | "backo2": "1.0.2", 526 | "base64-arraybuffer": "0.1.5", 527 | "component-bind": "1.0.0", 528 | "component-emitter": "1.2.1", 529 | "debug": "2.6.9", 530 | "engine.io-client": "3.1.5", 531 | "has-cors": "1.1.0", 532 | "indexof": "0.0.1", 533 | "object-component": "0.0.3", 534 | "parseqs": "0.0.5", 535 | "parseuri": "0.0.5", 536 | "socket.io-parser": "3.1.3", 537 | "to-array": "0.1.4" 538 | } 539 | }, 540 | "socket.io-parser": { 541 | "version": "3.1.3", 542 | "resolved": "http://registry.npm.taobao.org/socket.io-parser/download/socket.io-parser-3.1.3.tgz", 543 | "integrity": "sha1-7S2l7nnxCVUDbj2kE7/X8eTYbI4=", 544 | "requires": { 545 | "component-emitter": "1.2.1", 546 | "debug": "3.1.0", 547 | "has-binary2": "1.0.2", 548 | "isarray": "2.0.1" 549 | }, 550 | "dependencies": { 551 | "debug": { 552 | "version": "3.1.0", 553 | "resolved": "http://registry.npm.taobao.org/debug/download/debug-3.1.0.tgz", 554 | "integrity": "sha1-W7WgZyYotkFJVmuhaBnmFRjGcmE=", 555 | "requires": { 556 | "ms": "2.0.0" 557 | } 558 | } 559 | } 560 | }, 561 | "statuses": { 562 | "version": "1.3.1", 563 | "resolved": "http://registry.npm.taobao.org/statuses/download/statuses-1.3.1.tgz", 564 | "integrity": "sha1-+vUbnrdKrvOzrPStX2Gr8ky3uT4=" 565 | }, 566 | "to-array": { 567 | "version": "0.1.4", 568 | "resolved": "http://registry.npm.taobao.org/to-array/download/to-array-0.1.4.tgz", 569 | "integrity": "sha1-F+bBH3PdTz10zaek/zI46a2b+JA=" 570 | }, 571 | "type-is": { 572 | "version": "1.6.16", 573 | "resolved": "http://registry.npm.taobao.org/type-is/download/type-is-1.6.16.tgz", 574 | "integrity": "sha1-+JzjQVQcZysl7nrjxz3uOyvlAZQ=", 575 | "requires": { 576 | "media-typer": "0.3.0", 577 | "mime-types": "2.1.18" 578 | } 579 | }, 580 | "ultron": { 581 | "version": "1.1.1", 582 | "resolved": "http://registry.npm.taobao.org/ultron/download/ultron-1.1.1.tgz", 583 | "integrity": "sha1-n+FTahCmZKZSZqHjzPhf02MCvJw=" 584 | }, 585 | "underscore": { 586 | "version": "1.8.3", 587 | "resolved": "http://registry.npm.taobao.org/underscore/download/underscore-1.8.3.tgz", 588 | "integrity": "sha1-Tz+1OxBuYJf8+ctBCfKl6b36UCI=" 589 | }, 590 | "unpipe": { 591 | "version": "1.0.0", 592 | "resolved": "http://registry.npm.taobao.org/unpipe/download/unpipe-1.0.0.tgz", 593 | "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=" 594 | }, 595 | "utils-merge": { 596 | "version": "1.0.1", 597 | "resolved": "http://registry.npm.taobao.org/utils-merge/download/utils-merge-1.0.1.tgz", 598 | "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=" 599 | }, 600 | "uws": { 601 | "version": "9.14.0", 602 | "resolved": "http://registry.npm.taobao.org/uws/download/uws-9.14.0.tgz", 603 | "integrity": "sha1-+sg4a+/DOno3BcvVjcR7Qwyk3ZU=", 604 | "optional": true 605 | }, 606 | "vary": { 607 | "version": "1.1.2", 608 | "resolved": "http://registry.npm.taobao.org/vary/download/vary-1.1.2.tgz", 609 | "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=" 610 | }, 611 | "ws": { 612 | "version": "3.3.3", 613 | "resolved": "http://registry.npm.taobao.org/ws/download/ws-3.3.3.tgz", 614 | "integrity": "sha1-8c+E/i1ekB686U767OeF8YeiKPI=", 615 | "requires": { 616 | "async-limiter": "1.0.0", 617 | "safe-buffer": "5.1.1", 618 | "ultron": "1.1.1" 619 | } 620 | }, 621 | "xmlhttprequest-ssl": { 622 | "version": "1.5.5", 623 | "resolved": "http://registry.npm.taobao.org/xmlhttprequest-ssl/download/xmlhttprequest-ssl-1.5.5.tgz", 624 | "integrity": "sha1-wodrBhaKrcQOV9l+gRkayPQ5iz4=" 625 | }, 626 | "yeast": { 627 | "version": "0.1.2", 628 | "resolved": "http://registry.npm.taobao.org/yeast/download/yeast-0.1.2.tgz", 629 | "integrity": "sha1-AI4G2AlDIMNy28L47XagymyKxBk=" 630 | } 631 | } 632 | } 633 | -------------------------------------------------------------------------------- /chat_server/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "chat_server", 3 | "version": "1.0.0", 4 | "description": "", 5 | "main": "index.js", 6 | "scripts": { 7 | "test": "echo \"Error: no test specified\" && exit 1" 8 | }, 9 | "author": "", 10 | "license": "ISC", 11 | "dependencies": { 12 | "@types/sequelize": "^4.27.12", 13 | "express": "^4.16.2", 14 | "sequelize": "^4.37.5", 15 | "socket.io": "^2.0.4", 16 | "sqlite3": "^4.0.0", 17 | "underscore": "^1.8.3" 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /chat_server/yarn-error.log: -------------------------------------------------------------------------------- 1 | Arguments: 2 | D:\Program Files\nodejs\node.exe D:\Program Files (x86)\Yarn\bin\yarn.js add @typessSequelize 3 | 4 | PATH: 5 | C:\cmder_mini\bin;C:\cmder_mini\vendor\conemu-maximus5\ConEmu\Scripts;C:\cmder_mini\vendor\conemu-maximus5;C:\cmder_mini\vendor\conemu-maximus5\ConEmu;C:\ProgramData\Oracle\Java\javapath;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\Program Files (x86)\Windows7Master;C:\Program Files (x86)\NVIDIA Corporation\PhysX\Common;C:\Windows\system32\config\systemprofile\.dnx\bin;C:\Program Files\Microsoft DNX\Dnvm\;C:\Program Files\Microsoft SQL Server\130\Tools\Binn\;C:\Program Files\Git\cmd;C:\Program Files (x86)\Windows Kits\8.1\Windows Performance Toolkit\;C:\Program Files (x86)\GtkSharp\2.12\bin;C:\Program Files\Microsoft SQL Server\110\Tools\Binn\;C:\Program Files (x86)\Microsoft SDKs\TypeScript\1.0\;C:\Program Files\Microsoft SQL Server\120\Tools\Binn\;C:\Program Files (x86)\Common Files\Autodesk Shared\;C:\Program Files (x86)\backburner 2\;C:\Go\bin;D:\Program Files\nodejs\;C:\Program Files\TortoiseSVN\bin;C:\Program Files\TortoiseGit\bin;C:\ProgramData\chocolatey\bin;C:\Program Files\MySQL\MySQL Utilities 1.6\;D:\Program Files (x86)\Yarn\bin\;;C:\apache-maven-3.5.2\bin;D:\Program Files\MongoDB\Server\3.4\bin;C:\Go\bin;D:\disunity_v0.5.0;C:\Users\Administrator\.sdkbox\bin;C:\cygwin\bin;%ANDROID_HOMR%\tools;%ANDROID_HOMR%\platform-tools;D:\Cocos2d\cocos2d-x-3.4\templates;D:\Cocos2d\cocos2d-x-3.4\tools\cocos2d-console\bin;D:\AndroidAll\gradle-3.5\bin;C:\Program Files\Java\jdk1.8.0_121\bin;Cocos\Cocos2d-x\Cocos2d-x-3.10\tools\cocos2d-console\bin;Cocos2d\cocos2d-x-3.4\templates;D:\AndroidAll\gradle-3.5\bin;C:\cmder_mini\bin;C:\cmder_mini;C:\Python27;C:\Program Files\Java\jdk1.8.0_121\bin;C:\Users\Administrator\AppData\Local\.meteor\;C:\Users\Administrator\AppData\Roaming\npm;C:\Program Files\Heroku\bin;D:\Program Files\Microsoft VS Code\bin;C:\Users\Administrator\AppData\Local\Yarn\bin;C:\Program Files\Git\usr\bin;C:\Program Files\Git\usr\share\vim\vim74;C:\cmder_mini\ 6 | 7 | Yarn version: 8 | 1.5.1 9 | 10 | Node version: 11 | 8.4.0 12 | 13 | Platform: 14 | win32 x64 15 | 16 | npm manifest: 17 | { 18 | "name": "chat_server", 19 | "version": "1.0.0", 20 | "description": "", 21 | "main": "index.js", 22 | "scripts": { 23 | "test": "echo \"Error: no test specified\" && exit 1" 24 | }, 25 | "author": "", 26 | "license": "ISC", 27 | "dependencies": { 28 | "express": "^4.16.2", 29 | "sequelize": "^4.37.5", 30 | "socket.io": "^2.0.4", 31 | "sqlite3": "^4.0.0", 32 | "underscore": "^1.8.3" 33 | } 34 | } 35 | 36 | yarn manifest: 37 | No manifest 38 | 39 | Lockfile: 40 | # THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. 41 | # yarn lockfile v1 42 | 43 | 44 | "@types/geojson@^1.0.0": 45 | version "1.0.6" 46 | resolved "https://registry.yarnpkg.com/@types/geojson/-/geojson-1.0.6.tgz#3e02972728c69248c2af08d60a48cbb8680fffdf" 47 | 48 | "@types/node@*": 49 | version "9.6.1" 50 | resolved "https://registry.yarnpkg.com/@types/node/-/node-9.6.1.tgz#e2d374ef15b315b48e7efc308fa1a7cd51faa06c" 51 | 52 | abbrev@1: 53 | version "1.1.1" 54 | resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.1.tgz#f8f2c887ad10bf67f634f005b6987fed3179aac8" 55 | 56 | accepts@~1.3.4, accepts@~1.3.5: 57 | version "1.3.5" 58 | resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.5.tgz#eb777df6011723a3b14e8a72c0805c8e86746bd2" 59 | dependencies: 60 | mime-types "~2.1.18" 61 | negotiator "0.6.1" 62 | 63 | after@0.8.2: 64 | version "0.8.2" 65 | resolved "https://registry.yarnpkg.com/after/-/after-0.8.2.tgz#fedb394f9f0e02aa9768e702bda23b505fae7e1f" 66 | 67 | ansi-regex@^2.0.0: 68 | version "2.1.1" 69 | resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df" 70 | 71 | aproba@^1.0.3: 72 | version "1.2.0" 73 | resolved "https://registry.yarnpkg.com/aproba/-/aproba-1.2.0.tgz#6802e6264efd18c790a1b0d517f0f2627bf2c94a" 74 | 75 | are-we-there-yet@~1.1.2: 76 | version "1.1.4" 77 | resolved "https://registry.yarnpkg.com/are-we-there-yet/-/are-we-there-yet-1.1.4.tgz#bb5dca382bb94f05e15194373d16fd3ba1ca110d" 78 | dependencies: 79 | delegates "^1.0.0" 80 | readable-stream "^2.0.6" 81 | 82 | array-flatten@1.1.1: 83 | version "1.1.1" 84 | resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-1.1.1.tgz#9a5f699051b1e7073328f2a008968b64ea2955d2" 85 | 86 | arraybuffer.slice@~0.0.7: 87 | version "0.0.7" 88 | resolved "https://registry.yarnpkg.com/arraybuffer.slice/-/arraybuffer.slice-0.0.7.tgz#3bbc4275dd584cc1b10809b89d4e8b63a69e7675" 89 | 90 | async-limiter@~1.0.0: 91 | version "1.0.0" 92 | resolved "https://registry.yarnpkg.com/async-limiter/-/async-limiter-1.0.0.tgz#78faed8c3d074ab81f22b4e985d79e8738f720f8" 93 | 94 | backo2@1.0.2: 95 | version "1.0.2" 96 | resolved "https://registry.yarnpkg.com/backo2/-/backo2-1.0.2.tgz#31ab1ac8b129363463e35b3ebb69f4dfcfba7947" 97 | 98 | balanced-match@^1.0.0: 99 | version "1.0.0" 100 | resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767" 101 | 102 | base64-arraybuffer@0.1.5: 103 | version "0.1.5" 104 | resolved "https://registry.yarnpkg.com/base64-arraybuffer/-/base64-arraybuffer-0.1.5.tgz#73926771923b5a19747ad666aa5cd4bf9c6e9ce8" 105 | 106 | base64id@1.0.0: 107 | version "1.0.0" 108 | resolved "https://registry.yarnpkg.com/base64id/-/base64id-1.0.0.tgz#47688cb99bb6804f0e06d3e763b1c32e57d8e6b6" 109 | 110 | better-assert@~1.0.0: 111 | version "1.0.2" 112 | resolved "https://registry.yarnpkg.com/better-assert/-/better-assert-1.0.2.tgz#40866b9e1b9e0b55b481894311e68faffaebc522" 113 | dependencies: 114 | callsite "1.0.0" 115 | 116 | blob@0.0.4: 117 | version "0.0.4" 118 | resolved "https://registry.yarnpkg.com/blob/-/blob-0.0.4.tgz#bcf13052ca54463f30f9fc7e95b9a47630a94921" 119 | 120 | bluebird@^3.4.6, bluebird@^3.5.0: 121 | version "3.5.1" 122 | resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.5.1.tgz#d9551f9de98f1fcda1e683d17ee91a0602ee2eb9" 123 | 124 | body-parser@1.18.2: 125 | version "1.18.2" 126 | resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.18.2.tgz#87678a19d84b47d859b83199bd59bce222b10454" 127 | dependencies: 128 | bytes "3.0.0" 129 | content-type "~1.0.4" 130 | debug "2.6.9" 131 | depd "~1.1.1" 132 | http-errors "~1.6.2" 133 | iconv-lite "0.4.19" 134 | on-finished "~2.3.0" 135 | qs "6.5.1" 136 | raw-body "2.3.2" 137 | type-is "~1.6.15" 138 | 139 | brace-expansion@^1.1.7: 140 | version "1.1.11" 141 | resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" 142 | dependencies: 143 | balanced-match "^1.0.0" 144 | concat-map "0.0.1" 145 | 146 | bytes@3.0.0: 147 | version "3.0.0" 148 | resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.0.0.tgz#d32815404d689699f85a4ea4fa8755dd13a96048" 149 | 150 | callsite@1.0.0: 151 | version "1.0.0" 152 | resolved "https://registry.yarnpkg.com/callsite/-/callsite-1.0.0.tgz#280398e5d664bd74038b6f0905153e6e8af1bc20" 153 | 154 | chownr@^1.0.1: 155 | version "1.0.1" 156 | resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.0.1.tgz#e2a75042a9551908bebd25b8523d5f9769d79181" 157 | 158 | cls-bluebird@^2.1.0: 159 | version "2.1.0" 160 | resolved "https://registry.yarnpkg.com/cls-bluebird/-/cls-bluebird-2.1.0.tgz#37ef1e080a8ffb55c2f4164f536f1919e7968aee" 161 | dependencies: 162 | is-bluebird "^1.0.2" 163 | shimmer "^1.1.0" 164 | 165 | code-point-at@^1.0.0: 166 | version "1.1.0" 167 | resolved "https://registry.yarnpkg.com/code-point-at/-/code-point-at-1.1.0.tgz#0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77" 168 | 169 | component-bind@1.0.0: 170 | version "1.0.0" 171 | resolved "https://registry.yarnpkg.com/component-bind/-/component-bind-1.0.0.tgz#00c608ab7dcd93897c0009651b1d3a8e1e73bbd1" 172 | 173 | component-emitter@1.2.1: 174 | version "1.2.1" 175 | resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.2.1.tgz#137918d6d78283f7df7a6b7c5a63e140e69425e6" 176 | 177 | component-inherit@0.0.3: 178 | version "0.0.3" 179 | resolved "https://registry.yarnpkg.com/component-inherit/-/component-inherit-0.0.3.tgz#645fc4adf58b72b649d5cae65135619db26ff143" 180 | 181 | concat-map@0.0.1: 182 | version "0.0.1" 183 | resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" 184 | 185 | console-control-strings@^1.0.0, console-control-strings@~1.1.0: 186 | version "1.1.0" 187 | resolved "https://registry.yarnpkg.com/console-control-strings/-/console-control-strings-1.1.0.tgz#3d7cf4464db6446ea644bf4b39507f9851008e8e" 188 | 189 | content-disposition@0.5.2: 190 | version "0.5.2" 191 | resolved "https://registry.yarnpkg.com/content-disposition/-/content-disposition-0.5.2.tgz#0cf68bb9ddf5f2be7961c3a85178cb85dba78cb4" 192 | 193 | content-type@~1.0.4: 194 | version "1.0.4" 195 | resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.4.tgz#e138cc75e040c727b1966fe5e5f8c9aee256fe3b" 196 | 197 | cookie-signature@1.0.6: 198 | version "1.0.6" 199 | resolved "https://registry.yarnpkg.com/cookie-signature/-/cookie-signature-1.0.6.tgz#e303a882b342cc3ee8ca513a79999734dab3ae2c" 200 | 201 | cookie@0.3.1: 202 | version "0.3.1" 203 | resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.3.1.tgz#e7e0a1f9ef43b4c8ba925c5c5a96e806d16873bb" 204 | 205 | core-util-is@~1.0.0: 206 | version "1.0.2" 207 | resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" 208 | 209 | debug@2.6.9, debug@^2.1.2, debug@^2.6.9: 210 | version "2.6.9" 211 | resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" 212 | dependencies: 213 | ms "2.0.0" 214 | 215 | debug@^3.1.0, debug@~3.1.0: 216 | version "3.1.0" 217 | resolved "https://registry.yarnpkg.com/debug/-/debug-3.1.0.tgz#5bb5a0672628b64149566ba16819e61518c67261" 218 | dependencies: 219 | ms "2.0.0" 220 | 221 | deep-extend@~0.4.0: 222 | version "0.4.2" 223 | resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.4.2.tgz#48b699c27e334bf89f10892be432f6e4c7d34a7f" 224 | 225 | delegates@^1.0.0: 226 | version "1.0.0" 227 | resolved "https://registry.yarnpkg.com/delegates/-/delegates-1.0.0.tgz#84c6e159b81904fdca59a0ef44cd870d31250f9a" 228 | 229 | depd@1.1.1: 230 | version "1.1.1" 231 | resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.1.tgz#5783b4e1c459f06fa5ca27f991f3d06e7a310359" 232 | 233 | depd@^1.1.0, depd@~1.1.1, depd@~1.1.2: 234 | version "1.1.2" 235 | resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.2.tgz#9bcd52e14c097763e749b274c4346ed2e560b5a9" 236 | 237 | destroy@~1.0.4: 238 | version "1.0.4" 239 | resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.0.4.tgz#978857442c44749e4206613e37946205826abd80" 240 | 241 | detect-libc@^1.0.2: 242 | version "1.0.3" 243 | resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-1.0.3.tgz#fa137c4bd698edf55cd5cd02ac559f91a4c4ba9b" 244 | 245 | dottie@^2.0.0: 246 | version "2.0.0" 247 | resolved "https://registry.yarnpkg.com/dottie/-/dottie-2.0.0.tgz#da191981c8b8d713ca0115d5898cf397c2f0ddd0" 248 | 249 | ee-first@1.1.1: 250 | version "1.1.1" 251 | resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" 252 | 253 | encodeurl@~1.0.2: 254 | version "1.0.2" 255 | resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59" 256 | 257 | engine.io-client@~3.2.0: 258 | version "3.2.1" 259 | resolved "https://registry.yarnpkg.com/engine.io-client/-/engine.io-client-3.2.1.tgz#6f54c0475de487158a1a7c77d10178708b6add36" 260 | dependencies: 261 | component-emitter "1.2.1" 262 | component-inherit "0.0.3" 263 | debug "~3.1.0" 264 | engine.io-parser "~2.1.1" 265 | has-cors "1.1.0" 266 | indexof "0.0.1" 267 | parseqs "0.0.5" 268 | parseuri "0.0.5" 269 | ws "~3.3.1" 270 | xmlhttprequest-ssl "~1.5.4" 271 | yeast "0.1.2" 272 | 273 | engine.io-parser@~2.1.0, engine.io-parser@~2.1.1: 274 | version "2.1.2" 275 | resolved "https://registry.yarnpkg.com/engine.io-parser/-/engine.io-parser-2.1.2.tgz#4c0f4cff79aaeecbbdcfdea66a823c6085409196" 276 | dependencies: 277 | after "0.8.2" 278 | arraybuffer.slice "~0.0.7" 279 | base64-arraybuffer "0.1.5" 280 | blob "0.0.4" 281 | has-binary2 "~1.0.2" 282 | 283 | engine.io@~3.2.0: 284 | version "3.2.0" 285 | resolved "https://registry.yarnpkg.com/engine.io/-/engine.io-3.2.0.tgz#54332506f42f2edc71690d2f2a42349359f3bf7d" 286 | dependencies: 287 | accepts "~1.3.4" 288 | base64id "1.0.0" 289 | cookie "0.3.1" 290 | debug "~3.1.0" 291 | engine.io-parser "~2.1.0" 292 | ws "~3.3.1" 293 | 294 | escape-html@~1.0.3: 295 | version "1.0.3" 296 | resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988" 297 | 298 | etag@~1.8.1: 299 | version "1.8.1" 300 | resolved "https://registry.yarnpkg.com/etag/-/etag-1.8.1.tgz#41ae2eeb65efa62268aebfea83ac7d79299b0887" 301 | 302 | express@^4.16.2: 303 | version "4.16.3" 304 | resolved "https://registry.yarnpkg.com/express/-/express-4.16.3.tgz#6af8a502350db3246ecc4becf6b5a34d22f7ed53" 305 | dependencies: 306 | accepts "~1.3.5" 307 | array-flatten "1.1.1" 308 | body-parser "1.18.2" 309 | content-disposition "0.5.2" 310 | content-type "~1.0.4" 311 | cookie "0.3.1" 312 | cookie-signature "1.0.6" 313 | debug "2.6.9" 314 | depd "~1.1.2" 315 | encodeurl "~1.0.2" 316 | escape-html "~1.0.3" 317 | etag "~1.8.1" 318 | finalhandler "1.1.1" 319 | fresh "0.5.2" 320 | merge-descriptors "1.0.1" 321 | methods "~1.1.2" 322 | on-finished "~2.3.0" 323 | parseurl "~1.3.2" 324 | path-to-regexp "0.1.7" 325 | proxy-addr "~2.0.3" 326 | qs "6.5.1" 327 | range-parser "~1.2.0" 328 | safe-buffer "5.1.1" 329 | send "0.16.2" 330 | serve-static "1.13.2" 331 | setprototypeof "1.1.0" 332 | statuses "~1.4.0" 333 | type-is "~1.6.16" 334 | utils-merge "1.0.1" 335 | vary "~1.1.2" 336 | 337 | finalhandler@1.1.1: 338 | version "1.1.1" 339 | resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.1.1.tgz#eebf4ed840079c83f4249038c9d703008301b105" 340 | dependencies: 341 | debug "2.6.9" 342 | encodeurl "~1.0.2" 343 | escape-html "~1.0.3" 344 | on-finished "~2.3.0" 345 | parseurl "~1.3.2" 346 | statuses "~1.4.0" 347 | unpipe "~1.0.0" 348 | 349 | forwarded@~0.1.2: 350 | version "0.1.2" 351 | resolved "https://registry.yarnpkg.com/forwarded/-/forwarded-0.1.2.tgz#98c23dab1175657b8c0573e8ceccd91b0ff18c84" 352 | 353 | fresh@0.5.2: 354 | version "0.5.2" 355 | resolved "https://registry.yarnpkg.com/fresh/-/fresh-0.5.2.tgz#3d8cadd90d976569fa835ab1f8e4b23a105605a7" 356 | 357 | fs-minipass@^1.2.5: 358 | version "1.2.5" 359 | resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-1.2.5.tgz#06c277218454ec288df77ada54a03b8702aacb9d" 360 | dependencies: 361 | minipass "^2.2.1" 362 | 363 | fs.realpath@^1.0.0: 364 | version "1.0.0" 365 | resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" 366 | 367 | gauge@~2.7.3: 368 | version "2.7.4" 369 | resolved "https://registry.yarnpkg.com/gauge/-/gauge-2.7.4.tgz#2c03405c7538c39d7eb37b317022e325fb018bf7" 370 | dependencies: 371 | aproba "^1.0.3" 372 | console-control-strings "^1.0.0" 373 | has-unicode "^2.0.0" 374 | object-assign "^4.1.0" 375 | signal-exit "^3.0.0" 376 | string-width "^1.0.1" 377 | strip-ansi "^3.0.1" 378 | wide-align "^1.1.0" 379 | 380 | generic-pool@^3.4.0: 381 | version "3.4.2" 382 | resolved "https://registry.yarnpkg.com/generic-pool/-/generic-pool-3.4.2.tgz#92ff7196520d670839a67308092a12aadf2f6a59" 383 | 384 | glob@^7.0.5: 385 | version "7.1.2" 386 | resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.2.tgz#c19c9df9a028702d678612384a6552404c636d15" 387 | dependencies: 388 | fs.realpath "^1.0.0" 389 | inflight "^1.0.4" 390 | inherits "2" 391 | minimatch "^3.0.4" 392 | once "^1.3.0" 393 | path-is-absolute "^1.0.0" 394 | 395 | has-binary2@~1.0.2: 396 | version "1.0.2" 397 | resolved "https://registry.yarnpkg.com/has-binary2/-/has-binary2-1.0.2.tgz#e83dba49f0b9be4d026d27365350d9f03f54be98" 398 | dependencies: 399 | isarray "2.0.1" 400 | 401 | has-cors@1.1.0: 402 | version "1.1.0" 403 | resolved "https://registry.yarnpkg.com/has-cors/-/has-cors-1.1.0.tgz#5e474793f7ea9843d1bb99c23eef49ff126fff39" 404 | 405 | has-unicode@^2.0.0: 406 | version "2.0.1" 407 | resolved "https://registry.yarnpkg.com/has-unicode/-/has-unicode-2.0.1.tgz#e0e6fe6a28cf51138855e086d1691e771de2a8b9" 408 | 409 | http-errors@1.6.2: 410 | version "1.6.2" 411 | resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.6.2.tgz#0a002cc85707192a7e7946ceedc11155f60ec736" 412 | dependencies: 413 | depd "1.1.1" 414 | inherits "2.0.3" 415 | setprototypeof "1.0.3" 416 | statuses ">= 1.3.1 < 2" 417 | 418 | http-errors@~1.6.2: 419 | version "1.6.3" 420 | resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.6.3.tgz#8b55680bb4be283a0b5bf4ea2e38580be1d9320d" 421 | dependencies: 422 | depd "~1.1.2" 423 | inherits "2.0.3" 424 | setprototypeof "1.1.0" 425 | statuses ">= 1.4.0 < 2" 426 | 427 | iconv-lite@0.4.19, iconv-lite@^0.4.4: 428 | version "0.4.19" 429 | resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.19.tgz#f7468f60135f5e5dad3399c0a81be9a1603a082b" 430 | 431 | ignore-walk@^3.0.1: 432 | version "3.0.1" 433 | resolved "https://registry.yarnpkg.com/ignore-walk/-/ignore-walk-3.0.1.tgz#a83e62e7d272ac0e3b551aaa82831a19b69f82f8" 434 | dependencies: 435 | minimatch "^3.0.4" 436 | 437 | indexof@0.0.1: 438 | version "0.0.1" 439 | resolved "https://registry.yarnpkg.com/indexof/-/indexof-0.0.1.tgz#82dc336d232b9062179d05ab3293a66059fd435d" 440 | 441 | inflection@1.12.0: 442 | version "1.12.0" 443 | resolved "https://registry.yarnpkg.com/inflection/-/inflection-1.12.0.tgz#a200935656d6f5f6bc4dc7502e1aecb703228416" 444 | 445 | inflight@^1.0.4: 446 | version "1.0.6" 447 | resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" 448 | dependencies: 449 | once "^1.3.0" 450 | wrappy "1" 451 | 452 | inherits@2, inherits@2.0.3, inherits@~2.0.3: 453 | version "2.0.3" 454 | resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" 455 | 456 | ini@~1.3.0: 457 | version "1.3.5" 458 | resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.5.tgz#eee25f56db1c9ec6085e0c22778083f596abf927" 459 | 460 | ipaddr.js@1.6.0: 461 | version "1.6.0" 462 | resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.6.0.tgz#e3fa357b773da619f26e95f049d055c72796f86b" 463 | 464 | is-bluebird@^1.0.2: 465 | version "1.0.2" 466 | resolved "https://registry.yarnpkg.com/is-bluebird/-/is-bluebird-1.0.2.tgz#096439060f4aa411abee19143a84d6a55346d6e2" 467 | 468 | is-fullwidth-code-point@^1.0.0: 469 | version "1.0.0" 470 | resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz#ef9e31386f031a7f0d643af82fde50c457ef00cb" 471 | dependencies: 472 | number-is-nan "^1.0.0" 473 | 474 | isarray@2.0.1: 475 | version "2.0.1" 476 | resolved "https://registry.yarnpkg.com/isarray/-/isarray-2.0.1.tgz#a37d94ed9cda2d59865c9f76fe596ee1f338741e" 477 | 478 | isarray@~1.0.0: 479 | version "1.0.0" 480 | resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" 481 | 482 | lodash@^4.17.1: 483 | version "4.17.5" 484 | resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.5.tgz#99a92d65c0272debe8c96b6057bc8fbfa3bed511" 485 | 486 | media-typer@0.3.0: 487 | version "0.3.0" 488 | resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748" 489 | 490 | merge-descriptors@1.0.1: 491 | version "1.0.1" 492 | resolved "https://registry.yarnpkg.com/merge-descriptors/-/merge-descriptors-1.0.1.tgz#b00aaa556dd8b44568150ec9d1b953f3f90cbb61" 493 | 494 | methods@~1.1.2: 495 | version "1.1.2" 496 | resolved "https://registry.yarnpkg.com/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee" 497 | 498 | mime-db@~1.33.0: 499 | version "1.33.0" 500 | resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.33.0.tgz#a3492050a5cb9b63450541e39d9788d2272783db" 501 | 502 | mime-types@~2.1.18: 503 | version "2.1.18" 504 | resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.18.tgz#6f323f60a83d11146f831ff11fd66e2fe5503bb8" 505 | dependencies: 506 | mime-db "~1.33.0" 507 | 508 | mime@1.4.1: 509 | version "1.4.1" 510 | resolved "https://registry.yarnpkg.com/mime/-/mime-1.4.1.tgz#121f9ebc49e3766f311a76e1fa1c8003c4b03aa6" 511 | 512 | minimatch@^3.0.4: 513 | version "3.0.4" 514 | resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" 515 | dependencies: 516 | brace-expansion "^1.1.7" 517 | 518 | minimist@0.0.8: 519 | version "0.0.8" 520 | resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d" 521 | 522 | minimist@^1.2.0: 523 | version "1.2.0" 524 | resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.0.tgz#a35008b20f41383eec1fb914f4cd5df79a264284" 525 | 526 | minipass@^2.2.1, minipass@^2.2.4: 527 | version "2.2.4" 528 | resolved "https://registry.yarnpkg.com/minipass/-/minipass-2.2.4.tgz#03c824d84551ec38a8d1bb5bc350a5a30a354a40" 529 | dependencies: 530 | safe-buffer "^5.1.1" 531 | yallist "^3.0.0" 532 | 533 | minizlib@^1.1.0: 534 | version "1.1.0" 535 | resolved "https://registry.yarnpkg.com/minizlib/-/minizlib-1.1.0.tgz#11e13658ce46bc3a70a267aac58359d1e0c29ceb" 536 | dependencies: 537 | minipass "^2.2.1" 538 | 539 | mkdirp@^0.5.0, mkdirp@^0.5.1: 540 | version "0.5.1" 541 | resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903" 542 | dependencies: 543 | minimist "0.0.8" 544 | 545 | moment-timezone@^0.5.14: 546 | version "0.5.14" 547 | resolved "https://registry.yarnpkg.com/moment-timezone/-/moment-timezone-0.5.14.tgz#4eb38ff9538b80108ba467a458f3ed4268ccfcb1" 548 | dependencies: 549 | moment ">= 2.9.0" 550 | 551 | "moment@>= 2.9.0", moment@^2.20.0: 552 | version "2.22.0" 553 | resolved "https://registry.yarnpkg.com/moment/-/moment-2.22.0.tgz#7921ade01017dd45186e7fee5f424f0b8663a730" 554 | 555 | ms@2.0.0: 556 | version "2.0.0" 557 | resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" 558 | 559 | nan@~2.9.2: 560 | version "2.9.2" 561 | resolved "https://registry.yarnpkg.com/nan/-/nan-2.9.2.tgz#f564d75f5f8f36a6d9456cca7a6c4fe488ab7866" 562 | 563 | needle@^2.2.0: 564 | version "2.2.0" 565 | resolved "https://registry.yarnpkg.com/needle/-/needle-2.2.0.tgz#f14efc69cee1024b72c8b21c7bdf94a731dc12fa" 566 | dependencies: 567 | debug "^2.1.2" 568 | iconv-lite "^0.4.4" 569 | sax "^1.2.4" 570 | 571 | negotiator@0.6.1: 572 | version "0.6.1" 573 | resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.1.tgz#2b327184e8992101177b28563fb5e7102acd0ca9" 574 | 575 | node-pre-gyp@~0.9.0: 576 | version "0.9.0" 577 | resolved "https://registry.yarnpkg.com/node-pre-gyp/-/node-pre-gyp-0.9.0.tgz#bdd4c3afac9b1b1ebff0a9ff3362859eb6781bb8" 578 | dependencies: 579 | detect-libc "^1.0.2" 580 | mkdirp "^0.5.1" 581 | needle "^2.2.0" 582 | nopt "^4.0.1" 583 | npm-packlist "^1.1.6" 584 | npmlog "^4.0.2" 585 | rc "^1.1.7" 586 | rimraf "^2.6.1" 587 | semver "^5.3.0" 588 | tar "^4" 589 | 590 | nopt@^4.0.1: 591 | version "4.0.1" 592 | resolved "https://registry.yarnpkg.com/nopt/-/nopt-4.0.1.tgz#d0d4685afd5415193c8c7505602d0d17cd64474d" 593 | dependencies: 594 | abbrev "1" 595 | osenv "^0.1.4" 596 | 597 | npm-bundled@^1.0.1: 598 | version "1.0.3" 599 | resolved "https://registry.yarnpkg.com/npm-bundled/-/npm-bundled-1.0.3.tgz#7e71703d973af3370a9591bafe3a63aca0be2308" 600 | 601 | npm-packlist@^1.1.6: 602 | version "1.1.10" 603 | resolved "https://registry.yarnpkg.com/npm-packlist/-/npm-packlist-1.1.10.tgz#1039db9e985727e464df066f4cf0ab6ef85c398a" 604 | dependencies: 605 | ignore-walk "^3.0.1" 606 | npm-bundled "^1.0.1" 607 | 608 | npmlog@^4.0.2: 609 | version "4.1.2" 610 | resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-4.1.2.tgz#08a7f2a8bf734604779a9efa4ad5cc717abb954b" 611 | dependencies: 612 | are-we-there-yet "~1.1.2" 613 | console-control-strings "~1.1.0" 614 | gauge "~2.7.3" 615 | set-blocking "~2.0.0" 616 | 617 | number-is-nan@^1.0.0: 618 | version "1.0.1" 619 | resolved "https://registry.yarnpkg.com/number-is-nan/-/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d" 620 | 621 | object-assign@^4.1.0: 622 | version "4.1.1" 623 | resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" 624 | 625 | object-component@0.0.3: 626 | version "0.0.3" 627 | resolved "https://registry.yarnpkg.com/object-component/-/object-component-0.0.3.tgz#f0c69aa50efc95b866c186f400a33769cb2f1291" 628 | 629 | on-finished@~2.3.0: 630 | version "2.3.0" 631 | resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.3.0.tgz#20f1336481b083cd75337992a16971aa2d906947" 632 | dependencies: 633 | ee-first "1.1.1" 634 | 635 | once@^1.3.0: 636 | version "1.4.0" 637 | resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" 638 | dependencies: 639 | wrappy "1" 640 | 641 | os-homedir@^1.0.0: 642 | version "1.0.2" 643 | resolved "https://registry.yarnpkg.com/os-homedir/-/os-homedir-1.0.2.tgz#ffbc4988336e0e833de0c168c7ef152121aa7fb3" 644 | 645 | os-tmpdir@^1.0.0: 646 | version "1.0.2" 647 | resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" 648 | 649 | osenv@^0.1.4: 650 | version "0.1.5" 651 | resolved "https://registry.yarnpkg.com/osenv/-/osenv-0.1.5.tgz#85cdfafaeb28e8677f416e287592b5f3f49ea410" 652 | dependencies: 653 | os-homedir "^1.0.0" 654 | os-tmpdir "^1.0.0" 655 | 656 | parseqs@0.0.5: 657 | version "0.0.5" 658 | resolved "https://registry.yarnpkg.com/parseqs/-/parseqs-0.0.5.tgz#d5208a3738e46766e291ba2ea173684921a8b89d" 659 | dependencies: 660 | better-assert "~1.0.0" 661 | 662 | parseuri@0.0.5: 663 | version "0.0.5" 664 | resolved "https://registry.yarnpkg.com/parseuri/-/parseuri-0.0.5.tgz#80204a50d4dbb779bfdc6ebe2778d90e4bce320a" 665 | dependencies: 666 | better-assert "~1.0.0" 667 | 668 | parseurl@~1.3.2: 669 | version "1.3.2" 670 | resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.2.tgz#fc289d4ed8993119460c156253262cdc8de65bf3" 671 | 672 | path-is-absolute@^1.0.0: 673 | version "1.0.1" 674 | resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" 675 | 676 | path-to-regexp@0.1.7: 677 | version "0.1.7" 678 | resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-0.1.7.tgz#df604178005f522f15eb4490e7247a1bfaa67f8c" 679 | 680 | process-nextick-args@~2.0.0: 681 | version "2.0.0" 682 | resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.0.tgz#a37d732f4271b4ab1ad070d35508e8290788ffaa" 683 | 684 | proxy-addr@~2.0.3: 685 | version "2.0.3" 686 | resolved "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-2.0.3.tgz#355f262505a621646b3130a728eb647e22055341" 687 | dependencies: 688 | forwarded "~0.1.2" 689 | ipaddr.js "1.6.0" 690 | 691 | qs@6.5.1: 692 | version "6.5.1" 693 | resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.1.tgz#349cdf6eef89ec45c12d7d5eb3fc0c870343a6d8" 694 | 695 | range-parser@~1.2.0: 696 | version "1.2.0" 697 | resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.0.tgz#f49be6b487894ddc40dcc94a322f611092e00d5e" 698 | 699 | raw-body@2.3.2: 700 | version "2.3.2" 701 | resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.3.2.tgz#bcd60c77d3eb93cde0050295c3f379389bc88f89" 702 | dependencies: 703 | bytes "3.0.0" 704 | http-errors "1.6.2" 705 | iconv-lite "0.4.19" 706 | unpipe "1.0.0" 707 | 708 | rc@^1.1.7: 709 | version "1.2.6" 710 | resolved "https://registry.yarnpkg.com/rc/-/rc-1.2.6.tgz#eb18989c6d4f4f162c399f79ddd29f3835568092" 711 | dependencies: 712 | deep-extend "~0.4.0" 713 | ini "~1.3.0" 714 | minimist "^1.2.0" 715 | strip-json-comments "~2.0.1" 716 | 717 | readable-stream@^2.0.6: 718 | version "2.3.5" 719 | resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.5.tgz#b4f85003a938cbb6ecbce2a124fb1012bd1a838d" 720 | dependencies: 721 | core-util-is "~1.0.0" 722 | inherits "~2.0.3" 723 | isarray "~1.0.0" 724 | process-nextick-args "~2.0.0" 725 | safe-buffer "~5.1.1" 726 | string_decoder "~1.0.3" 727 | util-deprecate "~1.0.1" 728 | 729 | retry-as-promised@^2.3.2: 730 | version "2.3.2" 731 | resolved "https://registry.yarnpkg.com/retry-as-promised/-/retry-as-promised-2.3.2.tgz#cd974ee4fd9b5fe03cbf31871ee48221c07737b7" 732 | dependencies: 733 | bluebird "^3.4.6" 734 | debug "^2.6.9" 735 | 736 | rimraf@^2.6.1: 737 | version "2.6.2" 738 | resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.2.tgz#2ed8150d24a16ea8651e6d6ef0f47c4158ce7a36" 739 | dependencies: 740 | glob "^7.0.5" 741 | 742 | safe-buffer@5.1.1, safe-buffer@^5.1.1, safe-buffer@~5.1.0, safe-buffer@~5.1.1: 743 | version "5.1.1" 744 | resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.1.tgz#893312af69b2123def71f57889001671eeb2c853" 745 | 746 | sax@^1.2.4: 747 | version "1.2.4" 748 | resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9" 749 | 750 | semver@^5.3.0, semver@^5.5.0: 751 | version "5.5.0" 752 | resolved "https://registry.yarnpkg.com/semver/-/semver-5.5.0.tgz#dc4bbc7a6ca9d916dee5d43516f0092b58f7b8ab" 753 | 754 | send@0.16.2: 755 | version "0.16.2" 756 | resolved "https://registry.yarnpkg.com/send/-/send-0.16.2.tgz#6ecca1e0f8c156d141597559848df64730a6bbc1" 757 | dependencies: 758 | debug "2.6.9" 759 | depd "~1.1.2" 760 | destroy "~1.0.4" 761 | encodeurl "~1.0.2" 762 | escape-html "~1.0.3" 763 | etag "~1.8.1" 764 | fresh "0.5.2" 765 | http-errors "~1.6.2" 766 | mime "1.4.1" 767 | ms "2.0.0" 768 | on-finished "~2.3.0" 769 | range-parser "~1.2.0" 770 | statuses "~1.4.0" 771 | 772 | sequelize@^4.37.5: 773 | version "4.37.5" 774 | resolved "https://registry.yarnpkg.com/sequelize/-/sequelize-4.37.5.tgz#08a464a4f0f2563a41f77a1fc1067344f3144b52" 775 | dependencies: 776 | bluebird "^3.5.0" 777 | cls-bluebird "^2.1.0" 778 | debug "^3.1.0" 779 | depd "^1.1.0" 780 | dottie "^2.0.0" 781 | generic-pool "^3.4.0" 782 | inflection "1.12.0" 783 | lodash "^4.17.1" 784 | moment "^2.20.0" 785 | moment-timezone "^0.5.14" 786 | retry-as-promised "^2.3.2" 787 | semver "^5.5.0" 788 | terraformer-wkt-parser "^1.1.2" 789 | toposort-class "^1.0.1" 790 | uuid "^3.2.1" 791 | validator "^9.4.1" 792 | wkx "^0.4.1" 793 | 794 | serve-static@1.13.2: 795 | version "1.13.2" 796 | resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.13.2.tgz#095e8472fd5b46237db50ce486a43f4b86c6cec1" 797 | dependencies: 798 | encodeurl "~1.0.2" 799 | escape-html "~1.0.3" 800 | parseurl "~1.3.2" 801 | send "0.16.2" 802 | 803 | set-blocking@~2.0.0: 804 | version "2.0.0" 805 | resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" 806 | 807 | setprototypeof@1.0.3: 808 | version "1.0.3" 809 | resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.0.3.tgz#66567e37043eeb4f04d91bd658c0cbefb55b8e04" 810 | 811 | setprototypeof@1.1.0: 812 | version "1.1.0" 813 | resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.1.0.tgz#d0bd85536887b6fe7c0d818cb962d9d91c54e656" 814 | 815 | shimmer@^1.1.0: 816 | version "1.2.0" 817 | resolved "https://registry.yarnpkg.com/shimmer/-/shimmer-1.2.0.tgz#f966f7555789763e74d8841193685a5e78736665" 818 | 819 | signal-exit@^3.0.0: 820 | version "3.0.2" 821 | resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.2.tgz#b5fdc08f1287ea1178628e415e25132b73646c6d" 822 | 823 | socket.io-adapter@~1.1.0: 824 | version "1.1.1" 825 | resolved "https://registry.yarnpkg.com/socket.io-adapter/-/socket.io-adapter-1.1.1.tgz#2a805e8a14d6372124dd9159ad4502f8cb07f06b" 826 | 827 | socket.io-client@2.1.0: 828 | version "2.1.0" 829 | resolved "https://registry.yarnpkg.com/socket.io-client/-/socket.io-client-2.1.0.tgz#0d0b21d460dc4ed36e57085136f2be0137ff20ff" 830 | dependencies: 831 | backo2 "1.0.2" 832 | base64-arraybuffer "0.1.5" 833 | component-bind "1.0.0" 834 | component-emitter "1.2.1" 835 | debug "~3.1.0" 836 | engine.io-client "~3.2.0" 837 | has-binary2 "~1.0.2" 838 | has-cors "1.1.0" 839 | indexof "0.0.1" 840 | object-component "0.0.3" 841 | parseqs "0.0.5" 842 | parseuri "0.0.5" 843 | socket.io-parser "~3.2.0" 844 | to-array "0.1.4" 845 | 846 | socket.io-parser@~3.2.0: 847 | version "3.2.0" 848 | resolved "https://registry.yarnpkg.com/socket.io-parser/-/socket.io-parser-3.2.0.tgz#e7c6228b6aa1f814e6148aea325b51aa9499e077" 849 | dependencies: 850 | component-emitter "1.2.1" 851 | debug "~3.1.0" 852 | isarray "2.0.1" 853 | 854 | socket.io@^2.0.4: 855 | version "2.1.0" 856 | resolved "https://registry.yarnpkg.com/socket.io/-/socket.io-2.1.0.tgz#de77161795b6303e7aefc982ea04acb0cec17395" 857 | dependencies: 858 | debug "~3.1.0" 859 | engine.io "~3.2.0" 860 | has-binary2 "~1.0.2" 861 | socket.io-adapter "~1.1.0" 862 | socket.io-client "2.1.0" 863 | socket.io-parser "~3.2.0" 864 | 865 | sqlite3@^4.0.0: 866 | version "4.0.0" 867 | resolved "https://registry.yarnpkg.com/sqlite3/-/sqlite3-4.0.0.tgz#cc0e093ab51873f50d9dfc4126fcbef15d486570" 868 | dependencies: 869 | nan "~2.9.2" 870 | node-pre-gyp "~0.9.0" 871 | 872 | "statuses@>= 1.3.1 < 2", "statuses@>= 1.4.0 < 2": 873 | version "1.5.0" 874 | resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.5.0.tgz#161c7dac177659fd9811f43771fa99381478628c" 875 | 876 | statuses@~1.4.0: 877 | version "1.4.0" 878 | resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.4.0.tgz#bb73d446da2796106efcc1b601a253d6c46bd087" 879 | 880 | string-width@^1.0.1, string-width@^1.0.2: 881 | version "1.0.2" 882 | resolved "https://registry.yarnpkg.com/string-width/-/string-width-1.0.2.tgz#118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3" 883 | dependencies: 884 | code-point-at "^1.0.0" 885 | is-fullwidth-code-point "^1.0.0" 886 | strip-ansi "^3.0.0" 887 | 888 | string_decoder@~1.0.3: 889 | version "1.0.3" 890 | resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.0.3.tgz#0fc67d7c141825de94282dd536bec6b9bce860ab" 891 | dependencies: 892 | safe-buffer "~5.1.0" 893 | 894 | strip-ansi@^3.0.0, strip-ansi@^3.0.1: 895 | version "3.0.1" 896 | resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf" 897 | dependencies: 898 | ansi-regex "^2.0.0" 899 | 900 | strip-json-comments@~2.0.1: 901 | version "2.0.1" 902 | resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a" 903 | 904 | tar@^4: 905 | version "4.4.1" 906 | resolved "https://registry.yarnpkg.com/tar/-/tar-4.4.1.tgz#b25d5a8470c976fd7a9a8a350f42c59e9fa81749" 907 | dependencies: 908 | chownr "^1.0.1" 909 | fs-minipass "^1.2.5" 910 | minipass "^2.2.4" 911 | minizlib "^1.1.0" 912 | mkdirp "^0.5.0" 913 | safe-buffer "^5.1.1" 914 | yallist "^3.0.2" 915 | 916 | terraformer-wkt-parser@^1.1.2: 917 | version "1.1.2" 918 | resolved "https://registry.yarnpkg.com/terraformer-wkt-parser/-/terraformer-wkt-parser-1.1.2.tgz#336a0c8fc82094a5aff83288f69aedecd369bf0c" 919 | dependencies: 920 | terraformer "~1.0.5" 921 | 922 | terraformer@~1.0.5: 923 | version "1.0.8" 924 | resolved "https://registry.yarnpkg.com/terraformer/-/terraformer-1.0.8.tgz#51e0ad89746fcf2161dc6f65aa70e42377c8b593" 925 | dependencies: 926 | "@types/geojson" "^1.0.0" 927 | 928 | to-array@0.1.4: 929 | version "0.1.4" 930 | resolved "https://registry.yarnpkg.com/to-array/-/to-array-0.1.4.tgz#17e6c11f73dd4f3d74cda7a4ff3238e9ad9bf890" 931 | 932 | toposort-class@^1.0.1: 933 | version "1.0.1" 934 | resolved "https://registry.yarnpkg.com/toposort-class/-/toposort-class-1.0.1.tgz#7ffd1f78c8be28c3ba45cd4e1a3f5ee193bd9988" 935 | 936 | type-is@~1.6.15, type-is@~1.6.16: 937 | version "1.6.16" 938 | resolved "https://registry.yarnpkg.com/type-is/-/type-is-1.6.16.tgz#f89ce341541c672b25ee7ae3c73dee3b2be50194" 939 | dependencies: 940 | media-typer "0.3.0" 941 | mime-types "~2.1.18" 942 | 943 | ultron@~1.1.0: 944 | version "1.1.1" 945 | resolved "https://registry.yarnpkg.com/ultron/-/ultron-1.1.1.tgz#9fe1536a10a664a65266a1e3ccf85fd36302bc9c" 946 | 947 | underscore@^1.8.3: 948 | version "1.8.3" 949 | resolved "https://registry.yarnpkg.com/underscore/-/underscore-1.8.3.tgz#4f3fb53b106e6097fcf9cb4109f2a5e9bdfa5022" 950 | 951 | unpipe@1.0.0, unpipe@~1.0.0: 952 | version "1.0.0" 953 | resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec" 954 | 955 | util-deprecate@~1.0.1: 956 | version "1.0.2" 957 | resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" 958 | 959 | utils-merge@1.0.1: 960 | version "1.0.1" 961 | resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.1.tgz#9f95710f50a267947b2ccc124741c1028427e713" 962 | 963 | uuid@^3.2.1: 964 | version "3.2.1" 965 | resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.2.1.tgz#12c528bb9d58d0b9265d9a2f6f0fe8be17ff1f14" 966 | 967 | validator@^9.4.1: 968 | version "9.4.1" 969 | resolved "https://registry.yarnpkg.com/validator/-/validator-9.4.1.tgz#abf466d398b561cd243050112c6ff1de6cc12663" 970 | 971 | vary@~1.1.2: 972 | version "1.1.2" 973 | resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc" 974 | 975 | wide-align@^1.1.0: 976 | version "1.1.2" 977 | resolved "https://registry.yarnpkg.com/wide-align/-/wide-align-1.1.2.tgz#571e0f1b0604636ebc0dfc21b0339bbe31341710" 978 | dependencies: 979 | string-width "^1.0.2" 980 | 981 | wkx@^0.4.1: 982 | version "0.4.4" 983 | resolved "https://registry.yarnpkg.com/wkx/-/wkx-0.4.4.tgz#cf751b672e4b45e162f9fd30124878e73d96c9b2" 984 | dependencies: 985 | "@types/node" "*" 986 | 987 | wrappy@1: 988 | version "1.0.2" 989 | resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" 990 | 991 | ws@~3.3.1: 992 | version "3.3.3" 993 | resolved "https://registry.yarnpkg.com/ws/-/ws-3.3.3.tgz#f1cf84fe2d5e901ebce94efaece785f187a228f2" 994 | dependencies: 995 | async-limiter "~1.0.0" 996 | safe-buffer "~5.1.0" 997 | ultron "~1.1.0" 998 | 999 | xmlhttprequest-ssl@~1.5.4: 1000 | version "1.5.5" 1001 | resolved "https://registry.yarnpkg.com/xmlhttprequest-ssl/-/xmlhttprequest-ssl-1.5.5.tgz#c2876b06168aadc40e57d97e81191ac8f4398b3e" 1002 | 1003 | yallist@^3.0.0, yallist@^3.0.2: 1004 | version "3.0.2" 1005 | resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.0.2.tgz#8452b4bb7e83c7c188d8041c1a837c773d6d8bb9" 1006 | 1007 | yeast@0.1.2: 1008 | version "0.1.2" 1009 | resolved "https://registry.yarnpkg.com/yeast/-/yeast-0.1.2.tgz#008e06d8094320c372dbc2f8ed76a0ca6c8ac419" 1010 | 1011 | Trace: 1012 | Error: https://registry.yarnpkg.com/@typessSequelize: Not found 1013 | at Request.params.callback [as _callback] (D:\Program Files (x86)\Yarn\lib\cli.js:65019:18) 1014 | at Request.self.callback (D:\Program Files (x86)\Yarn\lib\cli.js:132430:22) 1015 | at emitTwo (events.js:125:13) 1016 | at Request.emit (events.js:213:7) 1017 | at Request. (D:\Program Files (x86)\Yarn\lib\cli.js:133413:10) 1018 | at emitOne (events.js:115:13) 1019 | at Request.emit (events.js:210:7) 1020 | at IncomingMessage. (D:\Program Files (x86)\Yarn\lib\cli.js:133333:12) 1021 | at Object.onceWrapper (events.js:314:30) 1022 | at emitNone (events.js:110:20) 1023 | -------------------------------------------------------------------------------- /chat_server/yarn.lock: -------------------------------------------------------------------------------- 1 | # THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. 2 | # yarn lockfile v1 3 | 4 | 5 | "@types/bluebird@*": 6 | version "3.5.20" 7 | resolved "https://registry.yarnpkg.com/@types/bluebird/-/bluebird-3.5.20.tgz#f6363172add6f4eabb8cada53ca9af2781e8d6a1" 8 | 9 | "@types/continuation-local-storage@*": 10 | version "3.2.1" 11 | resolved "https://registry.yarnpkg.com/@types/continuation-local-storage/-/continuation-local-storage-3.2.1.tgz#a33e0df9dce9b424d1c98fc4fdebd8578dceec7e" 12 | dependencies: 13 | "@types/node" "*" 14 | 15 | "@types/geojson@^1.0.0": 16 | version "1.0.6" 17 | resolved "https://registry.yarnpkg.com/@types/geojson/-/geojson-1.0.6.tgz#3e02972728c69248c2af08d60a48cbb8680fffdf" 18 | 19 | "@types/lodash@*": 20 | version "4.14.106" 21 | resolved "https://registry.yarnpkg.com/@types/lodash/-/lodash-4.14.106.tgz#6093e9a02aa567ddecfe9afadca89e53e5dce4dd" 22 | 23 | "@types/node@*": 24 | version "9.6.1" 25 | resolved "https://registry.yarnpkg.com/@types/node/-/node-9.6.1.tgz#e2d374ef15b315b48e7efc308fa1a7cd51faa06c" 26 | 27 | "@types/sequelize@^4.27.12": 28 | version "4.27.12" 29 | resolved "https://registry.yarnpkg.com/@types/sequelize/-/sequelize-4.27.12.tgz#531f647c57752ca44618de84b4d60cf3d64bcbfe" 30 | dependencies: 31 | "@types/bluebird" "*" 32 | "@types/continuation-local-storage" "*" 33 | "@types/lodash" "*" 34 | "@types/validator" "*" 35 | 36 | "@types/validator@*": 37 | version "9.4.0" 38 | resolved "https://registry.yarnpkg.com/@types/validator/-/validator-9.4.0.tgz#a4a80a31d3e4e094806ec446557808423379858d" 39 | 40 | abbrev@1: 41 | version "1.1.1" 42 | resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.1.tgz#f8f2c887ad10bf67f634f005b6987fed3179aac8" 43 | 44 | accepts@~1.3.4, accepts@~1.3.5: 45 | version "1.3.5" 46 | resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.5.tgz#eb777df6011723a3b14e8a72c0805c8e86746bd2" 47 | dependencies: 48 | mime-types "~2.1.18" 49 | negotiator "0.6.1" 50 | 51 | after@0.8.2: 52 | version "0.8.2" 53 | resolved "https://registry.yarnpkg.com/after/-/after-0.8.2.tgz#fedb394f9f0e02aa9768e702bda23b505fae7e1f" 54 | 55 | ansi-regex@^2.0.0: 56 | version "2.1.1" 57 | resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df" 58 | 59 | aproba@^1.0.3: 60 | version "1.2.0" 61 | resolved "https://registry.yarnpkg.com/aproba/-/aproba-1.2.0.tgz#6802e6264efd18c790a1b0d517f0f2627bf2c94a" 62 | 63 | are-we-there-yet@~1.1.2: 64 | version "1.1.4" 65 | resolved "https://registry.yarnpkg.com/are-we-there-yet/-/are-we-there-yet-1.1.4.tgz#bb5dca382bb94f05e15194373d16fd3ba1ca110d" 66 | dependencies: 67 | delegates "^1.0.0" 68 | readable-stream "^2.0.6" 69 | 70 | array-flatten@1.1.1: 71 | version "1.1.1" 72 | resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-1.1.1.tgz#9a5f699051b1e7073328f2a008968b64ea2955d2" 73 | 74 | arraybuffer.slice@~0.0.7: 75 | version "0.0.7" 76 | resolved "https://registry.yarnpkg.com/arraybuffer.slice/-/arraybuffer.slice-0.0.7.tgz#3bbc4275dd584cc1b10809b89d4e8b63a69e7675" 77 | 78 | async-limiter@~1.0.0: 79 | version "1.0.0" 80 | resolved "https://registry.yarnpkg.com/async-limiter/-/async-limiter-1.0.0.tgz#78faed8c3d074ab81f22b4e985d79e8738f720f8" 81 | 82 | backo2@1.0.2: 83 | version "1.0.2" 84 | resolved "https://registry.yarnpkg.com/backo2/-/backo2-1.0.2.tgz#31ab1ac8b129363463e35b3ebb69f4dfcfba7947" 85 | 86 | balanced-match@^1.0.0: 87 | version "1.0.0" 88 | resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767" 89 | 90 | base64-arraybuffer@0.1.5: 91 | version "0.1.5" 92 | resolved "https://registry.yarnpkg.com/base64-arraybuffer/-/base64-arraybuffer-0.1.5.tgz#73926771923b5a19747ad666aa5cd4bf9c6e9ce8" 93 | 94 | base64id@1.0.0: 95 | version "1.0.0" 96 | resolved "https://registry.yarnpkg.com/base64id/-/base64id-1.0.0.tgz#47688cb99bb6804f0e06d3e763b1c32e57d8e6b6" 97 | 98 | better-assert@~1.0.0: 99 | version "1.0.2" 100 | resolved "https://registry.yarnpkg.com/better-assert/-/better-assert-1.0.2.tgz#40866b9e1b9e0b55b481894311e68faffaebc522" 101 | dependencies: 102 | callsite "1.0.0" 103 | 104 | blob@0.0.4: 105 | version "0.0.4" 106 | resolved "https://registry.yarnpkg.com/blob/-/blob-0.0.4.tgz#bcf13052ca54463f30f9fc7e95b9a47630a94921" 107 | 108 | bluebird@^3.4.6, bluebird@^3.5.0: 109 | version "3.5.1" 110 | resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.5.1.tgz#d9551f9de98f1fcda1e683d17ee91a0602ee2eb9" 111 | 112 | body-parser@1.18.2: 113 | version "1.18.2" 114 | resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.18.2.tgz#87678a19d84b47d859b83199bd59bce222b10454" 115 | dependencies: 116 | bytes "3.0.0" 117 | content-type "~1.0.4" 118 | debug "2.6.9" 119 | depd "~1.1.1" 120 | http-errors "~1.6.2" 121 | iconv-lite "0.4.19" 122 | on-finished "~2.3.0" 123 | qs "6.5.1" 124 | raw-body "2.3.2" 125 | type-is "~1.6.15" 126 | 127 | brace-expansion@^1.1.7: 128 | version "1.1.11" 129 | resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" 130 | dependencies: 131 | balanced-match "^1.0.0" 132 | concat-map "0.0.1" 133 | 134 | bytes@3.0.0: 135 | version "3.0.0" 136 | resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.0.0.tgz#d32815404d689699f85a4ea4fa8755dd13a96048" 137 | 138 | callsite@1.0.0: 139 | version "1.0.0" 140 | resolved "https://registry.yarnpkg.com/callsite/-/callsite-1.0.0.tgz#280398e5d664bd74038b6f0905153e6e8af1bc20" 141 | 142 | chownr@^1.0.1: 143 | version "1.0.1" 144 | resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.0.1.tgz#e2a75042a9551908bebd25b8523d5f9769d79181" 145 | 146 | cls-bluebird@^2.1.0: 147 | version "2.1.0" 148 | resolved "https://registry.yarnpkg.com/cls-bluebird/-/cls-bluebird-2.1.0.tgz#37ef1e080a8ffb55c2f4164f536f1919e7968aee" 149 | dependencies: 150 | is-bluebird "^1.0.2" 151 | shimmer "^1.1.0" 152 | 153 | code-point-at@^1.0.0: 154 | version "1.1.0" 155 | resolved "https://registry.yarnpkg.com/code-point-at/-/code-point-at-1.1.0.tgz#0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77" 156 | 157 | component-bind@1.0.0: 158 | version "1.0.0" 159 | resolved "https://registry.yarnpkg.com/component-bind/-/component-bind-1.0.0.tgz#00c608ab7dcd93897c0009651b1d3a8e1e73bbd1" 160 | 161 | component-emitter@1.2.1: 162 | version "1.2.1" 163 | resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.2.1.tgz#137918d6d78283f7df7a6b7c5a63e140e69425e6" 164 | 165 | component-inherit@0.0.3: 166 | version "0.0.3" 167 | resolved "https://registry.yarnpkg.com/component-inherit/-/component-inherit-0.0.3.tgz#645fc4adf58b72b649d5cae65135619db26ff143" 168 | 169 | concat-map@0.0.1: 170 | version "0.0.1" 171 | resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" 172 | 173 | console-control-strings@^1.0.0, console-control-strings@~1.1.0: 174 | version "1.1.0" 175 | resolved "https://registry.yarnpkg.com/console-control-strings/-/console-control-strings-1.1.0.tgz#3d7cf4464db6446ea644bf4b39507f9851008e8e" 176 | 177 | content-disposition@0.5.2: 178 | version "0.5.2" 179 | resolved "https://registry.yarnpkg.com/content-disposition/-/content-disposition-0.5.2.tgz#0cf68bb9ddf5f2be7961c3a85178cb85dba78cb4" 180 | 181 | content-type@~1.0.4: 182 | version "1.0.4" 183 | resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.4.tgz#e138cc75e040c727b1966fe5e5f8c9aee256fe3b" 184 | 185 | cookie-signature@1.0.6: 186 | version "1.0.6" 187 | resolved "https://registry.yarnpkg.com/cookie-signature/-/cookie-signature-1.0.6.tgz#e303a882b342cc3ee8ca513a79999734dab3ae2c" 188 | 189 | cookie@0.3.1: 190 | version "0.3.1" 191 | resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.3.1.tgz#e7e0a1f9ef43b4c8ba925c5c5a96e806d16873bb" 192 | 193 | core-util-is@~1.0.0: 194 | version "1.0.2" 195 | resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" 196 | 197 | debug@2.6.9, debug@^2.1.2, debug@^2.6.9: 198 | version "2.6.9" 199 | resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" 200 | dependencies: 201 | ms "2.0.0" 202 | 203 | debug@^3.1.0, debug@~3.1.0: 204 | version "3.1.0" 205 | resolved "https://registry.yarnpkg.com/debug/-/debug-3.1.0.tgz#5bb5a0672628b64149566ba16819e61518c67261" 206 | dependencies: 207 | ms "2.0.0" 208 | 209 | deep-extend@~0.4.0: 210 | version "0.4.2" 211 | resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.4.2.tgz#48b699c27e334bf89f10892be432f6e4c7d34a7f" 212 | 213 | delegates@^1.0.0: 214 | version "1.0.0" 215 | resolved "https://registry.yarnpkg.com/delegates/-/delegates-1.0.0.tgz#84c6e159b81904fdca59a0ef44cd870d31250f9a" 216 | 217 | depd@1.1.1: 218 | version "1.1.1" 219 | resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.1.tgz#5783b4e1c459f06fa5ca27f991f3d06e7a310359" 220 | 221 | depd@^1.1.0, depd@~1.1.1, depd@~1.1.2: 222 | version "1.1.2" 223 | resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.2.tgz#9bcd52e14c097763e749b274c4346ed2e560b5a9" 224 | 225 | destroy@~1.0.4: 226 | version "1.0.4" 227 | resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.0.4.tgz#978857442c44749e4206613e37946205826abd80" 228 | 229 | detect-libc@^1.0.2: 230 | version "1.0.3" 231 | resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-1.0.3.tgz#fa137c4bd698edf55cd5cd02ac559f91a4c4ba9b" 232 | 233 | dottie@^2.0.0: 234 | version "2.0.0" 235 | resolved "https://registry.yarnpkg.com/dottie/-/dottie-2.0.0.tgz#da191981c8b8d713ca0115d5898cf397c2f0ddd0" 236 | 237 | ee-first@1.1.1: 238 | version "1.1.1" 239 | resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" 240 | 241 | encodeurl@~1.0.2: 242 | version "1.0.2" 243 | resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59" 244 | 245 | engine.io-client@~3.2.0: 246 | version "3.2.1" 247 | resolved "https://registry.yarnpkg.com/engine.io-client/-/engine.io-client-3.2.1.tgz#6f54c0475de487158a1a7c77d10178708b6add36" 248 | dependencies: 249 | component-emitter "1.2.1" 250 | component-inherit "0.0.3" 251 | debug "~3.1.0" 252 | engine.io-parser "~2.1.1" 253 | has-cors "1.1.0" 254 | indexof "0.0.1" 255 | parseqs "0.0.5" 256 | parseuri "0.0.5" 257 | ws "~3.3.1" 258 | xmlhttprequest-ssl "~1.5.4" 259 | yeast "0.1.2" 260 | 261 | engine.io-parser@~2.1.0, engine.io-parser@~2.1.1: 262 | version "2.1.2" 263 | resolved "https://registry.yarnpkg.com/engine.io-parser/-/engine.io-parser-2.1.2.tgz#4c0f4cff79aaeecbbdcfdea66a823c6085409196" 264 | dependencies: 265 | after "0.8.2" 266 | arraybuffer.slice "~0.0.7" 267 | base64-arraybuffer "0.1.5" 268 | blob "0.0.4" 269 | has-binary2 "~1.0.2" 270 | 271 | engine.io@~3.2.0: 272 | version "3.2.0" 273 | resolved "https://registry.yarnpkg.com/engine.io/-/engine.io-3.2.0.tgz#54332506f42f2edc71690d2f2a42349359f3bf7d" 274 | dependencies: 275 | accepts "~1.3.4" 276 | base64id "1.0.0" 277 | cookie "0.3.1" 278 | debug "~3.1.0" 279 | engine.io-parser "~2.1.0" 280 | ws "~3.3.1" 281 | 282 | escape-html@~1.0.3: 283 | version "1.0.3" 284 | resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988" 285 | 286 | etag@~1.8.1: 287 | version "1.8.1" 288 | resolved "https://registry.yarnpkg.com/etag/-/etag-1.8.1.tgz#41ae2eeb65efa62268aebfea83ac7d79299b0887" 289 | 290 | express@^4.16.2: 291 | version "4.16.3" 292 | resolved "https://registry.yarnpkg.com/express/-/express-4.16.3.tgz#6af8a502350db3246ecc4becf6b5a34d22f7ed53" 293 | dependencies: 294 | accepts "~1.3.5" 295 | array-flatten "1.1.1" 296 | body-parser "1.18.2" 297 | content-disposition "0.5.2" 298 | content-type "~1.0.4" 299 | cookie "0.3.1" 300 | cookie-signature "1.0.6" 301 | debug "2.6.9" 302 | depd "~1.1.2" 303 | encodeurl "~1.0.2" 304 | escape-html "~1.0.3" 305 | etag "~1.8.1" 306 | finalhandler "1.1.1" 307 | fresh "0.5.2" 308 | merge-descriptors "1.0.1" 309 | methods "~1.1.2" 310 | on-finished "~2.3.0" 311 | parseurl "~1.3.2" 312 | path-to-regexp "0.1.7" 313 | proxy-addr "~2.0.3" 314 | qs "6.5.1" 315 | range-parser "~1.2.0" 316 | safe-buffer "5.1.1" 317 | send "0.16.2" 318 | serve-static "1.13.2" 319 | setprototypeof "1.1.0" 320 | statuses "~1.4.0" 321 | type-is "~1.6.16" 322 | utils-merge "1.0.1" 323 | vary "~1.1.2" 324 | 325 | finalhandler@1.1.1: 326 | version "1.1.1" 327 | resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.1.1.tgz#eebf4ed840079c83f4249038c9d703008301b105" 328 | dependencies: 329 | debug "2.6.9" 330 | encodeurl "~1.0.2" 331 | escape-html "~1.0.3" 332 | on-finished "~2.3.0" 333 | parseurl "~1.3.2" 334 | statuses "~1.4.0" 335 | unpipe "~1.0.0" 336 | 337 | forwarded@~0.1.2: 338 | version "0.1.2" 339 | resolved "https://registry.yarnpkg.com/forwarded/-/forwarded-0.1.2.tgz#98c23dab1175657b8c0573e8ceccd91b0ff18c84" 340 | 341 | fresh@0.5.2: 342 | version "0.5.2" 343 | resolved "https://registry.yarnpkg.com/fresh/-/fresh-0.5.2.tgz#3d8cadd90d976569fa835ab1f8e4b23a105605a7" 344 | 345 | fs-minipass@^1.2.5: 346 | version "1.2.5" 347 | resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-1.2.5.tgz#06c277218454ec288df77ada54a03b8702aacb9d" 348 | dependencies: 349 | minipass "^2.2.1" 350 | 351 | fs.realpath@^1.0.0: 352 | version "1.0.0" 353 | resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" 354 | 355 | gauge@~2.7.3: 356 | version "2.7.4" 357 | resolved "https://registry.yarnpkg.com/gauge/-/gauge-2.7.4.tgz#2c03405c7538c39d7eb37b317022e325fb018bf7" 358 | dependencies: 359 | aproba "^1.0.3" 360 | console-control-strings "^1.0.0" 361 | has-unicode "^2.0.0" 362 | object-assign "^4.1.0" 363 | signal-exit "^3.0.0" 364 | string-width "^1.0.1" 365 | strip-ansi "^3.0.1" 366 | wide-align "^1.1.0" 367 | 368 | generic-pool@^3.4.0: 369 | version "3.4.2" 370 | resolved "https://registry.yarnpkg.com/generic-pool/-/generic-pool-3.4.2.tgz#92ff7196520d670839a67308092a12aadf2f6a59" 371 | 372 | glob@^7.0.5: 373 | version "7.1.2" 374 | resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.2.tgz#c19c9df9a028702d678612384a6552404c636d15" 375 | dependencies: 376 | fs.realpath "^1.0.0" 377 | inflight "^1.0.4" 378 | inherits "2" 379 | minimatch "^3.0.4" 380 | once "^1.3.0" 381 | path-is-absolute "^1.0.0" 382 | 383 | has-binary2@~1.0.2: 384 | version "1.0.2" 385 | resolved "https://registry.yarnpkg.com/has-binary2/-/has-binary2-1.0.2.tgz#e83dba49f0b9be4d026d27365350d9f03f54be98" 386 | dependencies: 387 | isarray "2.0.1" 388 | 389 | has-cors@1.1.0: 390 | version "1.1.0" 391 | resolved "https://registry.yarnpkg.com/has-cors/-/has-cors-1.1.0.tgz#5e474793f7ea9843d1bb99c23eef49ff126fff39" 392 | 393 | has-unicode@^2.0.0: 394 | version "2.0.1" 395 | resolved "https://registry.yarnpkg.com/has-unicode/-/has-unicode-2.0.1.tgz#e0e6fe6a28cf51138855e086d1691e771de2a8b9" 396 | 397 | http-errors@1.6.2: 398 | version "1.6.2" 399 | resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.6.2.tgz#0a002cc85707192a7e7946ceedc11155f60ec736" 400 | dependencies: 401 | depd "1.1.1" 402 | inherits "2.0.3" 403 | setprototypeof "1.0.3" 404 | statuses ">= 1.3.1 < 2" 405 | 406 | http-errors@~1.6.2: 407 | version "1.6.3" 408 | resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.6.3.tgz#8b55680bb4be283a0b5bf4ea2e38580be1d9320d" 409 | dependencies: 410 | depd "~1.1.2" 411 | inherits "2.0.3" 412 | setprototypeof "1.1.0" 413 | statuses ">= 1.4.0 < 2" 414 | 415 | iconv-lite@0.4.19, iconv-lite@^0.4.4: 416 | version "0.4.19" 417 | resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.19.tgz#f7468f60135f5e5dad3399c0a81be9a1603a082b" 418 | 419 | ignore-walk@^3.0.1: 420 | version "3.0.1" 421 | resolved "https://registry.yarnpkg.com/ignore-walk/-/ignore-walk-3.0.1.tgz#a83e62e7d272ac0e3b551aaa82831a19b69f82f8" 422 | dependencies: 423 | minimatch "^3.0.4" 424 | 425 | indexof@0.0.1: 426 | version "0.0.1" 427 | resolved "https://registry.yarnpkg.com/indexof/-/indexof-0.0.1.tgz#82dc336d232b9062179d05ab3293a66059fd435d" 428 | 429 | inflection@1.12.0: 430 | version "1.12.0" 431 | resolved "https://registry.yarnpkg.com/inflection/-/inflection-1.12.0.tgz#a200935656d6f5f6bc4dc7502e1aecb703228416" 432 | 433 | inflight@^1.0.4: 434 | version "1.0.6" 435 | resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" 436 | dependencies: 437 | once "^1.3.0" 438 | wrappy "1" 439 | 440 | inherits@2, inherits@2.0.3, inherits@~2.0.3: 441 | version "2.0.3" 442 | resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" 443 | 444 | ini@~1.3.0: 445 | version "1.3.5" 446 | resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.5.tgz#eee25f56db1c9ec6085e0c22778083f596abf927" 447 | 448 | ipaddr.js@1.6.0: 449 | version "1.6.0" 450 | resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.6.0.tgz#e3fa357b773da619f26e95f049d055c72796f86b" 451 | 452 | is-bluebird@^1.0.2: 453 | version "1.0.2" 454 | resolved "https://registry.yarnpkg.com/is-bluebird/-/is-bluebird-1.0.2.tgz#096439060f4aa411abee19143a84d6a55346d6e2" 455 | 456 | is-fullwidth-code-point@^1.0.0: 457 | version "1.0.0" 458 | resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz#ef9e31386f031a7f0d643af82fde50c457ef00cb" 459 | dependencies: 460 | number-is-nan "^1.0.0" 461 | 462 | isarray@2.0.1: 463 | version "2.0.1" 464 | resolved "https://registry.yarnpkg.com/isarray/-/isarray-2.0.1.tgz#a37d94ed9cda2d59865c9f76fe596ee1f338741e" 465 | 466 | isarray@~1.0.0: 467 | version "1.0.0" 468 | resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" 469 | 470 | lodash@^4.17.1: 471 | version "4.17.5" 472 | resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.5.tgz#99a92d65c0272debe8c96b6057bc8fbfa3bed511" 473 | 474 | media-typer@0.3.0: 475 | version "0.3.0" 476 | resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748" 477 | 478 | merge-descriptors@1.0.1: 479 | version "1.0.1" 480 | resolved "https://registry.yarnpkg.com/merge-descriptors/-/merge-descriptors-1.0.1.tgz#b00aaa556dd8b44568150ec9d1b953f3f90cbb61" 481 | 482 | methods@~1.1.2: 483 | version "1.1.2" 484 | resolved "https://registry.yarnpkg.com/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee" 485 | 486 | mime-db@~1.33.0: 487 | version "1.33.0" 488 | resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.33.0.tgz#a3492050a5cb9b63450541e39d9788d2272783db" 489 | 490 | mime-types@~2.1.18: 491 | version "2.1.18" 492 | resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.18.tgz#6f323f60a83d11146f831ff11fd66e2fe5503bb8" 493 | dependencies: 494 | mime-db "~1.33.0" 495 | 496 | mime@1.4.1: 497 | version "1.4.1" 498 | resolved "https://registry.yarnpkg.com/mime/-/mime-1.4.1.tgz#121f9ebc49e3766f311a76e1fa1c8003c4b03aa6" 499 | 500 | minimatch@^3.0.4: 501 | version "3.0.4" 502 | resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" 503 | dependencies: 504 | brace-expansion "^1.1.7" 505 | 506 | minimist@0.0.8: 507 | version "0.0.8" 508 | resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d" 509 | 510 | minimist@^1.2.0: 511 | version "1.2.0" 512 | resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.0.tgz#a35008b20f41383eec1fb914f4cd5df79a264284" 513 | 514 | minipass@^2.2.1, minipass@^2.2.4: 515 | version "2.2.4" 516 | resolved "https://registry.yarnpkg.com/minipass/-/minipass-2.2.4.tgz#03c824d84551ec38a8d1bb5bc350a5a30a354a40" 517 | dependencies: 518 | safe-buffer "^5.1.1" 519 | yallist "^3.0.0" 520 | 521 | minizlib@^1.1.0: 522 | version "1.1.0" 523 | resolved "https://registry.yarnpkg.com/minizlib/-/minizlib-1.1.0.tgz#11e13658ce46bc3a70a267aac58359d1e0c29ceb" 524 | dependencies: 525 | minipass "^2.2.1" 526 | 527 | mkdirp@^0.5.0, mkdirp@^0.5.1: 528 | version "0.5.1" 529 | resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903" 530 | dependencies: 531 | minimist "0.0.8" 532 | 533 | moment-timezone@^0.5.14: 534 | version "0.5.14" 535 | resolved "https://registry.yarnpkg.com/moment-timezone/-/moment-timezone-0.5.14.tgz#4eb38ff9538b80108ba467a458f3ed4268ccfcb1" 536 | dependencies: 537 | moment ">= 2.9.0" 538 | 539 | "moment@>= 2.9.0", moment@^2.20.0: 540 | version "2.22.0" 541 | resolved "https://registry.yarnpkg.com/moment/-/moment-2.22.0.tgz#7921ade01017dd45186e7fee5f424f0b8663a730" 542 | 543 | ms@2.0.0: 544 | version "2.0.0" 545 | resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" 546 | 547 | nan@~2.9.2: 548 | version "2.9.2" 549 | resolved "https://registry.yarnpkg.com/nan/-/nan-2.9.2.tgz#f564d75f5f8f36a6d9456cca7a6c4fe488ab7866" 550 | 551 | needle@^2.2.0: 552 | version "2.2.0" 553 | resolved "https://registry.yarnpkg.com/needle/-/needle-2.2.0.tgz#f14efc69cee1024b72c8b21c7bdf94a731dc12fa" 554 | dependencies: 555 | debug "^2.1.2" 556 | iconv-lite "^0.4.4" 557 | sax "^1.2.4" 558 | 559 | negotiator@0.6.1: 560 | version "0.6.1" 561 | resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.1.tgz#2b327184e8992101177b28563fb5e7102acd0ca9" 562 | 563 | node-pre-gyp@~0.9.0: 564 | version "0.9.0" 565 | resolved "https://registry.yarnpkg.com/node-pre-gyp/-/node-pre-gyp-0.9.0.tgz#bdd4c3afac9b1b1ebff0a9ff3362859eb6781bb8" 566 | dependencies: 567 | detect-libc "^1.0.2" 568 | mkdirp "^0.5.1" 569 | needle "^2.2.0" 570 | nopt "^4.0.1" 571 | npm-packlist "^1.1.6" 572 | npmlog "^4.0.2" 573 | rc "^1.1.7" 574 | rimraf "^2.6.1" 575 | semver "^5.3.0" 576 | tar "^4" 577 | 578 | nopt@^4.0.1: 579 | version "4.0.1" 580 | resolved "https://registry.yarnpkg.com/nopt/-/nopt-4.0.1.tgz#d0d4685afd5415193c8c7505602d0d17cd64474d" 581 | dependencies: 582 | abbrev "1" 583 | osenv "^0.1.4" 584 | 585 | npm-bundled@^1.0.1: 586 | version "1.0.3" 587 | resolved "https://registry.yarnpkg.com/npm-bundled/-/npm-bundled-1.0.3.tgz#7e71703d973af3370a9591bafe3a63aca0be2308" 588 | 589 | npm-packlist@^1.1.6: 590 | version "1.1.10" 591 | resolved "https://registry.yarnpkg.com/npm-packlist/-/npm-packlist-1.1.10.tgz#1039db9e985727e464df066f4cf0ab6ef85c398a" 592 | dependencies: 593 | ignore-walk "^3.0.1" 594 | npm-bundled "^1.0.1" 595 | 596 | npmlog@^4.0.2: 597 | version "4.1.2" 598 | resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-4.1.2.tgz#08a7f2a8bf734604779a9efa4ad5cc717abb954b" 599 | dependencies: 600 | are-we-there-yet "~1.1.2" 601 | console-control-strings "~1.1.0" 602 | gauge "~2.7.3" 603 | set-blocking "~2.0.0" 604 | 605 | number-is-nan@^1.0.0: 606 | version "1.0.1" 607 | resolved "https://registry.yarnpkg.com/number-is-nan/-/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d" 608 | 609 | object-assign@^4.1.0: 610 | version "4.1.1" 611 | resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" 612 | 613 | object-component@0.0.3: 614 | version "0.0.3" 615 | resolved "https://registry.yarnpkg.com/object-component/-/object-component-0.0.3.tgz#f0c69aa50efc95b866c186f400a33769cb2f1291" 616 | 617 | on-finished@~2.3.0: 618 | version "2.3.0" 619 | resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.3.0.tgz#20f1336481b083cd75337992a16971aa2d906947" 620 | dependencies: 621 | ee-first "1.1.1" 622 | 623 | once@^1.3.0: 624 | version "1.4.0" 625 | resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" 626 | dependencies: 627 | wrappy "1" 628 | 629 | os-homedir@^1.0.0: 630 | version "1.0.2" 631 | resolved "https://registry.yarnpkg.com/os-homedir/-/os-homedir-1.0.2.tgz#ffbc4988336e0e833de0c168c7ef152121aa7fb3" 632 | 633 | os-tmpdir@^1.0.0: 634 | version "1.0.2" 635 | resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" 636 | 637 | osenv@^0.1.4: 638 | version "0.1.5" 639 | resolved "https://registry.yarnpkg.com/osenv/-/osenv-0.1.5.tgz#85cdfafaeb28e8677f416e287592b5f3f49ea410" 640 | dependencies: 641 | os-homedir "^1.0.0" 642 | os-tmpdir "^1.0.0" 643 | 644 | parseqs@0.0.5: 645 | version "0.0.5" 646 | resolved "https://registry.yarnpkg.com/parseqs/-/parseqs-0.0.5.tgz#d5208a3738e46766e291ba2ea173684921a8b89d" 647 | dependencies: 648 | better-assert "~1.0.0" 649 | 650 | parseuri@0.0.5: 651 | version "0.0.5" 652 | resolved "https://registry.yarnpkg.com/parseuri/-/parseuri-0.0.5.tgz#80204a50d4dbb779bfdc6ebe2778d90e4bce320a" 653 | dependencies: 654 | better-assert "~1.0.0" 655 | 656 | parseurl@~1.3.2: 657 | version "1.3.2" 658 | resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.2.tgz#fc289d4ed8993119460c156253262cdc8de65bf3" 659 | 660 | path-is-absolute@^1.0.0: 661 | version "1.0.1" 662 | resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" 663 | 664 | path-to-regexp@0.1.7: 665 | version "0.1.7" 666 | resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-0.1.7.tgz#df604178005f522f15eb4490e7247a1bfaa67f8c" 667 | 668 | process-nextick-args@~2.0.0: 669 | version "2.0.0" 670 | resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.0.tgz#a37d732f4271b4ab1ad070d35508e8290788ffaa" 671 | 672 | proxy-addr@~2.0.3: 673 | version "2.0.3" 674 | resolved "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-2.0.3.tgz#355f262505a621646b3130a728eb647e22055341" 675 | dependencies: 676 | forwarded "~0.1.2" 677 | ipaddr.js "1.6.0" 678 | 679 | qs@6.5.1: 680 | version "6.5.1" 681 | resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.1.tgz#349cdf6eef89ec45c12d7d5eb3fc0c870343a6d8" 682 | 683 | range-parser@~1.2.0: 684 | version "1.2.0" 685 | resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.0.tgz#f49be6b487894ddc40dcc94a322f611092e00d5e" 686 | 687 | raw-body@2.3.2: 688 | version "2.3.2" 689 | resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.3.2.tgz#bcd60c77d3eb93cde0050295c3f379389bc88f89" 690 | dependencies: 691 | bytes "3.0.0" 692 | http-errors "1.6.2" 693 | iconv-lite "0.4.19" 694 | unpipe "1.0.0" 695 | 696 | rc@^1.1.7: 697 | version "1.2.6" 698 | resolved "https://registry.yarnpkg.com/rc/-/rc-1.2.6.tgz#eb18989c6d4f4f162c399f79ddd29f3835568092" 699 | dependencies: 700 | deep-extend "~0.4.0" 701 | ini "~1.3.0" 702 | minimist "^1.2.0" 703 | strip-json-comments "~2.0.1" 704 | 705 | readable-stream@^2.0.6: 706 | version "2.3.5" 707 | resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.5.tgz#b4f85003a938cbb6ecbce2a124fb1012bd1a838d" 708 | dependencies: 709 | core-util-is "~1.0.0" 710 | inherits "~2.0.3" 711 | isarray "~1.0.0" 712 | process-nextick-args "~2.0.0" 713 | safe-buffer "~5.1.1" 714 | string_decoder "~1.0.3" 715 | util-deprecate "~1.0.1" 716 | 717 | retry-as-promised@^2.3.2: 718 | version "2.3.2" 719 | resolved "https://registry.yarnpkg.com/retry-as-promised/-/retry-as-promised-2.3.2.tgz#cd974ee4fd9b5fe03cbf31871ee48221c07737b7" 720 | dependencies: 721 | bluebird "^3.4.6" 722 | debug "^2.6.9" 723 | 724 | rimraf@^2.6.1: 725 | version "2.6.2" 726 | resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.2.tgz#2ed8150d24a16ea8651e6d6ef0f47c4158ce7a36" 727 | dependencies: 728 | glob "^7.0.5" 729 | 730 | safe-buffer@5.1.1, safe-buffer@^5.1.1, safe-buffer@~5.1.0, safe-buffer@~5.1.1: 731 | version "5.1.1" 732 | resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.1.tgz#893312af69b2123def71f57889001671eeb2c853" 733 | 734 | sax@^1.2.4: 735 | version "1.2.4" 736 | resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9" 737 | 738 | semver@^5.3.0, semver@^5.5.0: 739 | version "5.5.0" 740 | resolved "https://registry.yarnpkg.com/semver/-/semver-5.5.0.tgz#dc4bbc7a6ca9d916dee5d43516f0092b58f7b8ab" 741 | 742 | send@0.16.2: 743 | version "0.16.2" 744 | resolved "https://registry.yarnpkg.com/send/-/send-0.16.2.tgz#6ecca1e0f8c156d141597559848df64730a6bbc1" 745 | dependencies: 746 | debug "2.6.9" 747 | depd "~1.1.2" 748 | destroy "~1.0.4" 749 | encodeurl "~1.0.2" 750 | escape-html "~1.0.3" 751 | etag "~1.8.1" 752 | fresh "0.5.2" 753 | http-errors "~1.6.2" 754 | mime "1.4.1" 755 | ms "2.0.0" 756 | on-finished "~2.3.0" 757 | range-parser "~1.2.0" 758 | statuses "~1.4.0" 759 | 760 | sequelize@^4.37.5: 761 | version "4.37.5" 762 | resolved "https://registry.yarnpkg.com/sequelize/-/sequelize-4.37.5.tgz#08a464a4f0f2563a41f77a1fc1067344f3144b52" 763 | dependencies: 764 | bluebird "^3.5.0" 765 | cls-bluebird "^2.1.0" 766 | debug "^3.1.0" 767 | depd "^1.1.0" 768 | dottie "^2.0.0" 769 | generic-pool "^3.4.0" 770 | inflection "1.12.0" 771 | lodash "^4.17.1" 772 | moment "^2.20.0" 773 | moment-timezone "^0.5.14" 774 | retry-as-promised "^2.3.2" 775 | semver "^5.5.0" 776 | terraformer-wkt-parser "^1.1.2" 777 | toposort-class "^1.0.1" 778 | uuid "^3.2.1" 779 | validator "^9.4.1" 780 | wkx "^0.4.1" 781 | 782 | serve-static@1.13.2: 783 | version "1.13.2" 784 | resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.13.2.tgz#095e8472fd5b46237db50ce486a43f4b86c6cec1" 785 | dependencies: 786 | encodeurl "~1.0.2" 787 | escape-html "~1.0.3" 788 | parseurl "~1.3.2" 789 | send "0.16.2" 790 | 791 | set-blocking@~2.0.0: 792 | version "2.0.0" 793 | resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" 794 | 795 | setprototypeof@1.0.3: 796 | version "1.0.3" 797 | resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.0.3.tgz#66567e37043eeb4f04d91bd658c0cbefb55b8e04" 798 | 799 | setprototypeof@1.1.0: 800 | version "1.1.0" 801 | resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.1.0.tgz#d0bd85536887b6fe7c0d818cb962d9d91c54e656" 802 | 803 | shimmer@^1.1.0: 804 | version "1.2.0" 805 | resolved "https://registry.yarnpkg.com/shimmer/-/shimmer-1.2.0.tgz#f966f7555789763e74d8841193685a5e78736665" 806 | 807 | signal-exit@^3.0.0: 808 | version "3.0.2" 809 | resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.2.tgz#b5fdc08f1287ea1178628e415e25132b73646c6d" 810 | 811 | socket.io-adapter@~1.1.0: 812 | version "1.1.1" 813 | resolved "https://registry.yarnpkg.com/socket.io-adapter/-/socket.io-adapter-1.1.1.tgz#2a805e8a14d6372124dd9159ad4502f8cb07f06b" 814 | 815 | socket.io-client@2.1.0: 816 | version "2.1.0" 817 | resolved "https://registry.yarnpkg.com/socket.io-client/-/socket.io-client-2.1.0.tgz#0d0b21d460dc4ed36e57085136f2be0137ff20ff" 818 | dependencies: 819 | backo2 "1.0.2" 820 | base64-arraybuffer "0.1.5" 821 | component-bind "1.0.0" 822 | component-emitter "1.2.1" 823 | debug "~3.1.0" 824 | engine.io-client "~3.2.0" 825 | has-binary2 "~1.0.2" 826 | has-cors "1.1.0" 827 | indexof "0.0.1" 828 | object-component "0.0.3" 829 | parseqs "0.0.5" 830 | parseuri "0.0.5" 831 | socket.io-parser "~3.2.0" 832 | to-array "0.1.4" 833 | 834 | socket.io-parser@~3.2.0: 835 | version "3.2.0" 836 | resolved "https://registry.yarnpkg.com/socket.io-parser/-/socket.io-parser-3.2.0.tgz#e7c6228b6aa1f814e6148aea325b51aa9499e077" 837 | dependencies: 838 | component-emitter "1.2.1" 839 | debug "~3.1.0" 840 | isarray "2.0.1" 841 | 842 | socket.io@^2.0.4: 843 | version "2.1.0" 844 | resolved "https://registry.yarnpkg.com/socket.io/-/socket.io-2.1.0.tgz#de77161795b6303e7aefc982ea04acb0cec17395" 845 | dependencies: 846 | debug "~3.1.0" 847 | engine.io "~3.2.0" 848 | has-binary2 "~1.0.2" 849 | socket.io-adapter "~1.1.0" 850 | socket.io-client "2.1.0" 851 | socket.io-parser "~3.2.0" 852 | 853 | sqlite3@^4.0.0: 854 | version "4.0.0" 855 | resolved "https://registry.yarnpkg.com/sqlite3/-/sqlite3-4.0.0.tgz#cc0e093ab51873f50d9dfc4126fcbef15d486570" 856 | dependencies: 857 | nan "~2.9.2" 858 | node-pre-gyp "~0.9.0" 859 | 860 | "statuses@>= 1.3.1 < 2", "statuses@>= 1.4.0 < 2": 861 | version "1.5.0" 862 | resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.5.0.tgz#161c7dac177659fd9811f43771fa99381478628c" 863 | 864 | statuses@~1.4.0: 865 | version "1.4.0" 866 | resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.4.0.tgz#bb73d446da2796106efcc1b601a253d6c46bd087" 867 | 868 | string-width@^1.0.1, string-width@^1.0.2: 869 | version "1.0.2" 870 | resolved "https://registry.yarnpkg.com/string-width/-/string-width-1.0.2.tgz#118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3" 871 | dependencies: 872 | code-point-at "^1.0.0" 873 | is-fullwidth-code-point "^1.0.0" 874 | strip-ansi "^3.0.0" 875 | 876 | string_decoder@~1.0.3: 877 | version "1.0.3" 878 | resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.0.3.tgz#0fc67d7c141825de94282dd536bec6b9bce860ab" 879 | dependencies: 880 | safe-buffer "~5.1.0" 881 | 882 | strip-ansi@^3.0.0, strip-ansi@^3.0.1: 883 | version "3.0.1" 884 | resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf" 885 | dependencies: 886 | ansi-regex "^2.0.0" 887 | 888 | strip-json-comments@~2.0.1: 889 | version "2.0.1" 890 | resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a" 891 | 892 | tar@^4: 893 | version "4.4.1" 894 | resolved "https://registry.yarnpkg.com/tar/-/tar-4.4.1.tgz#b25d5a8470c976fd7a9a8a350f42c59e9fa81749" 895 | dependencies: 896 | chownr "^1.0.1" 897 | fs-minipass "^1.2.5" 898 | minipass "^2.2.4" 899 | minizlib "^1.1.0" 900 | mkdirp "^0.5.0" 901 | safe-buffer "^5.1.1" 902 | yallist "^3.0.2" 903 | 904 | terraformer-wkt-parser@^1.1.2: 905 | version "1.1.2" 906 | resolved "https://registry.yarnpkg.com/terraformer-wkt-parser/-/terraformer-wkt-parser-1.1.2.tgz#336a0c8fc82094a5aff83288f69aedecd369bf0c" 907 | dependencies: 908 | terraformer "~1.0.5" 909 | 910 | terraformer@~1.0.5: 911 | version "1.0.8" 912 | resolved "https://registry.yarnpkg.com/terraformer/-/terraformer-1.0.8.tgz#51e0ad89746fcf2161dc6f65aa70e42377c8b593" 913 | dependencies: 914 | "@types/geojson" "^1.0.0" 915 | 916 | to-array@0.1.4: 917 | version "0.1.4" 918 | resolved "https://registry.yarnpkg.com/to-array/-/to-array-0.1.4.tgz#17e6c11f73dd4f3d74cda7a4ff3238e9ad9bf890" 919 | 920 | toposort-class@^1.0.1: 921 | version "1.0.1" 922 | resolved "https://registry.yarnpkg.com/toposort-class/-/toposort-class-1.0.1.tgz#7ffd1f78c8be28c3ba45cd4e1a3f5ee193bd9988" 923 | 924 | type-is@~1.6.15, type-is@~1.6.16: 925 | version "1.6.16" 926 | resolved "https://registry.yarnpkg.com/type-is/-/type-is-1.6.16.tgz#f89ce341541c672b25ee7ae3c73dee3b2be50194" 927 | dependencies: 928 | media-typer "0.3.0" 929 | mime-types "~2.1.18" 930 | 931 | ultron@~1.1.0: 932 | version "1.1.1" 933 | resolved "https://registry.yarnpkg.com/ultron/-/ultron-1.1.1.tgz#9fe1536a10a664a65266a1e3ccf85fd36302bc9c" 934 | 935 | underscore@^1.8.3: 936 | version "1.8.3" 937 | resolved "https://registry.yarnpkg.com/underscore/-/underscore-1.8.3.tgz#4f3fb53b106e6097fcf9cb4109f2a5e9bdfa5022" 938 | 939 | unpipe@1.0.0, unpipe@~1.0.0: 940 | version "1.0.0" 941 | resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec" 942 | 943 | util-deprecate@~1.0.1: 944 | version "1.0.2" 945 | resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" 946 | 947 | utils-merge@1.0.1: 948 | version "1.0.1" 949 | resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.1.tgz#9f95710f50a267947b2ccc124741c1028427e713" 950 | 951 | uuid@^3.2.1: 952 | version "3.2.1" 953 | resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.2.1.tgz#12c528bb9d58d0b9265d9a2f6f0fe8be17ff1f14" 954 | 955 | validator@^9.4.1: 956 | version "9.4.1" 957 | resolved "https://registry.yarnpkg.com/validator/-/validator-9.4.1.tgz#abf466d398b561cd243050112c6ff1de6cc12663" 958 | 959 | vary@~1.1.2: 960 | version "1.1.2" 961 | resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc" 962 | 963 | wide-align@^1.1.0: 964 | version "1.1.2" 965 | resolved "https://registry.yarnpkg.com/wide-align/-/wide-align-1.1.2.tgz#571e0f1b0604636ebc0dfc21b0339bbe31341710" 966 | dependencies: 967 | string-width "^1.0.2" 968 | 969 | wkx@^0.4.1: 970 | version "0.4.4" 971 | resolved "https://registry.yarnpkg.com/wkx/-/wkx-0.4.4.tgz#cf751b672e4b45e162f9fd30124878e73d96c9b2" 972 | dependencies: 973 | "@types/node" "*" 974 | 975 | wrappy@1: 976 | version "1.0.2" 977 | resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" 978 | 979 | ws@~3.3.1: 980 | version "3.3.3" 981 | resolved "https://registry.yarnpkg.com/ws/-/ws-3.3.3.tgz#f1cf84fe2d5e901ebce94efaece785f187a228f2" 982 | dependencies: 983 | async-limiter "~1.0.0" 984 | safe-buffer "~5.1.0" 985 | ultron "~1.1.0" 986 | 987 | xmlhttprequest-ssl@~1.5.4: 988 | version "1.5.5" 989 | resolved "https://registry.yarnpkg.com/xmlhttprequest-ssl/-/xmlhttprequest-ssl-1.5.5.tgz#c2876b06168aadc40e57d97e81191ac8f4398b3e" 990 | 991 | yallist@^3.0.0, yallist@^3.0.2: 992 | version "3.0.2" 993 | resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.0.2.tgz#8452b4bb7e83c7c188d8041c1a837c773d6d8bb9" 994 | 995 | yeast@0.1.2: 996 | version "0.1.2" 997 | resolved "https://registry.yarnpkg.com/yeast/-/yeast-0.1.2.tgz#008e06d8094320c372dbc2f8ed76a0ca6c8ac419" 998 | --------------------------------------------------------------------------------