├── Procfile
├── .gitignore
├── client
├── src
│ ├── pages
│ │ ├── Home
│ │ │ ├── index.js
│ │ │ └── Home.js
│ │ ├── Main
│ │ │ ├── index.js
│ │ │ ├── Main.css
│ │ │ └── Main.js
│ │ ├── CheckIn
│ │ │ ├── index.js
│ │ │ └── CheckIn.js
│ │ ├── Attendees
│ │ │ ├── index.js
│ │ │ └── Attendees.js
│ │ ├── Workshops
│ │ │ ├── index.js
│ │ │ └── Workshops.js
│ │ ├── Registration
│ │ │ ├── index.js
│ │ │ └── Registration.js
│ │ ├── BadgeGeneration
│ │ │ ├── index.js
│ │ │ └── BadgeGeneration.js
│ │ └── WorkshopDetails
│ │ │ ├── index.js
│ │ │ └── WorkshopDetails.js
│ ├── components
│ │ └── DropdownCustom
│ │ │ ├── index.js
│ │ │ └── DropdownCustom.js
│ ├── App.js
│ ├── index.js
│ └── utils
│ │ └── API.js
├── build
│ ├── icon.png
│ ├── favicon.ico
│ ├── img
│ │ ├── grid.png
│ │ └── placeit.png
│ ├── asset-manifest.json
│ ├── manifest.json
│ ├── index.html
│ ├── static
│ │ └── css
│ │ │ ├── main.b5408d31.css
│ │ │ └── main.b5408d31.css.map
│ └── service-worker.js
├── public
│ ├── icon.png
│ ├── favicon.ico
│ ├── img
│ │ ├── grid.png
│ │ └── placeit.png
│ ├── manifest.json
│ └── index.html
└── package.json
├── nodemon.json
├── db
└── schema.sql
├── routes
├── api
│ ├── checkIn.js
│ ├── registration.js
│ ├── workshops.js
│ ├── attendees.js
│ └── index.js
└── index.js
├── config
└── config.json
├── models
├── room.js
├── instructor.js
├── pass-type.js
├── index.js
├── workshop-selection.js
├── workshop.js
└── attendee.js
├── package.json
├── controllers
├── attendeesController.js
├── workshopsController.js
├── registrationController.js
└── checkInController.js
├── README.md
├── server.js
└── yarn.lock
/Procfile:
--------------------------------------------------------------------------------
1 | web: npm run server
2 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | node_modules/
2 | .DS_Store
--------------------------------------------------------------------------------
/client/src/pages/Home/index.js:
--------------------------------------------------------------------------------
1 | export { default } from "./Home.js";
--------------------------------------------------------------------------------
/client/src/pages/Main/index.js:
--------------------------------------------------------------------------------
1 | export { default } from "./Main.js";
--------------------------------------------------------------------------------
/client/src/pages/CheckIn/index.js:
--------------------------------------------------------------------------------
1 | export { default } from "./CheckIn.js";
--------------------------------------------------------------------------------
/nodemon.json:
--------------------------------------------------------------------------------
1 | {
2 | "ignore": [
3 | "client/*"
4 | ]
5 | }
6 |
--------------------------------------------------------------------------------
/client/src/pages/Attendees/index.js:
--------------------------------------------------------------------------------
1 | export { default } from "./Attendees.js";
--------------------------------------------------------------------------------
/client/src/pages/Workshops/index.js:
--------------------------------------------------------------------------------
1 | export { default } from "./Workshops.js";
--------------------------------------------------------------------------------
/client/src/pages/Registration/index.js:
--------------------------------------------------------------------------------
1 | export { default } from "./Registration.js";
--------------------------------------------------------------------------------
/client/src/pages/BadgeGeneration/index.js:
--------------------------------------------------------------------------------
1 | export { default } from "./BadgeGeneration.js";
--------------------------------------------------------------------------------
/client/src/pages/WorkshopDetails/index.js:
--------------------------------------------------------------------------------
1 | export { default } from "./WorkshopDetails.js";
--------------------------------------------------------------------------------
/client/src/components/DropdownCustom/index.js:
--------------------------------------------------------------------------------
1 | export { default } from "./DropdownCustom";
2 |
--------------------------------------------------------------------------------
/client/build/icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/evasimon/eventsnap/HEAD/client/build/icon.png
--------------------------------------------------------------------------------
/client/public/icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/evasimon/eventsnap/HEAD/client/public/icon.png
--------------------------------------------------------------------------------
/client/build/favicon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/evasimon/eventsnap/HEAD/client/build/favicon.ico
--------------------------------------------------------------------------------
/client/build/img/grid.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/evasimon/eventsnap/HEAD/client/build/img/grid.png
--------------------------------------------------------------------------------
/client/public/favicon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/evasimon/eventsnap/HEAD/client/public/favicon.ico
--------------------------------------------------------------------------------
/client/public/img/grid.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/evasimon/eventsnap/HEAD/client/public/img/grid.png
--------------------------------------------------------------------------------
/client/build/img/placeit.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/evasimon/eventsnap/HEAD/client/build/img/placeit.png
--------------------------------------------------------------------------------
/client/public/img/placeit.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/evasimon/eventsnap/HEAD/client/public/img/placeit.png
--------------------------------------------------------------------------------
/client/src/App.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import Main from "./pages/Main"
3 |
4 | const App = () =>
5 |
6 | export default App;
7 |
--------------------------------------------------------------------------------
/db/schema.sql:
--------------------------------------------------------------------------------
1 | -- Drops the evin_db if it exists currently --
2 | DROP DATABASE IF EXISTS evin_db;
3 | -- Creates the evin_db database --
4 | CREATE DATABASE evin_db;
--------------------------------------------------------------------------------
/client/src/index.js:
--------------------------------------------------------------------------------
1 | import React from "react";
2 | import ReactDOM from "react-dom";
3 | import App from "./App";
4 |
5 | ReactDOM.render( , document.getElementById("root"));
6 |
7 |
--------------------------------------------------------------------------------
/client/build/asset-manifest.json:
--------------------------------------------------------------------------------
1 | {
2 | "main.css": "static/css/main.b5408d31.css",
3 | "main.css.map": "static/css/main.b5408d31.css.map",
4 | "main.js": "static/js/main.37b459b1.js",
5 | "main.js.map": "static/js/main.37b459b1.js.map"
6 | }
--------------------------------------------------------------------------------
/routes/api/checkIn.js:
--------------------------------------------------------------------------------
1 | const router = require("express").Router();
2 | const checkInController = require("../../controllers/checkInController");
3 |
4 | // matches with "/api/checkin/:uuid/:id"
5 | router.route("/:uuid/:id")
6 | .post(checkInController.update);
7 |
8 | module.exports = router;
--------------------------------------------------------------------------------
/routes/api/registration.js:
--------------------------------------------------------------------------------
1 | const router = require("express").Router();
2 | const registrationController = require("../../controllers/registrationController");
3 |
4 | // matches with "/api/registration/:uuid"
5 | router.route("/:uuid")
6 | .post(registrationController.update);
7 |
8 | module.exports = router;
--------------------------------------------------------------------------------
/routes/index.js:
--------------------------------------------------------------------------------
1 | const path = require("path");
2 | const router = require("express").Router();
3 | const apiRoutes = require("./api");
4 |
5 | // API Routes
6 | router.use("/api", apiRoutes);
7 |
8 | // If no API routes are hit, send index.html
9 | router.use(function (req, res) {
10 | res.sendFile(path.join(__dirname, "../client/build/index.html"));
11 | });
12 |
13 | module.exports = router;
14 |
--------------------------------------------------------------------------------
/routes/api/workshops.js:
--------------------------------------------------------------------------------
1 | const router = require("express").Router();
2 | const workshopsController = require("../../controllers/workshopsController");
3 |
4 | // matches with "/api/workshops"
5 | router.route("/")
6 | .get(workshopsController.findAll)
7 |
8 | // matches with "/api/workshops/:id"
9 | router.route("/:id")
10 | .get(workshopsController.findWorkshop)
11 |
12 | module.exports = router;
--------------------------------------------------------------------------------
/routes/api/attendees.js:
--------------------------------------------------------------------------------
1 | const router = require("express").Router();
2 | const attendeesController = require("../../controllers/attendeesController");
3 |
4 | // matches with "/api/attendees"
5 | router.route("/")
6 | .get(attendeesController.findAll)
7 | .post(attendeesController.create);
8 |
9 | // matches with "/api/attendees/:id"
10 | router.route("/:id")
11 | .delete(attendeesController.remove);
12 |
13 | module.exports = router;
--------------------------------------------------------------------------------
/client/build/manifest.json:
--------------------------------------------------------------------------------
1 | {
2 | "short_name": "EventSnap",
3 | "name": "EventSnap",
4 | "icons": [
5 | {
6 | "src": "favicon.ico",
7 | "sizes": "192x192",
8 | "type": "image/png"
9 | },
10 | {
11 | "src": "icon.png",
12 | "sizes": "192x192",
13 | "type": "image/png",
14 | "density": 4.0
15 | }
16 | ],
17 | "start_url": "./",
18 | "display": "standalone",
19 | "theme_color": "#000000",
20 | "background_color": "#212b36"
21 | }
--------------------------------------------------------------------------------
/client/public/manifest.json:
--------------------------------------------------------------------------------
1 | {
2 | "short_name": "EventSnap",
3 | "name": "EventSnap",
4 | "icons": [
5 | {
6 | "src": "favicon.ico",
7 | "sizes": "192x192",
8 | "type": "image/png"
9 | },
10 | {
11 | "src": "icon.png",
12 | "sizes": "192x192",
13 | "type": "image/png",
14 | "density": 4.0
15 | }
16 | ],
17 | "start_url": "./",
18 | "display": "standalone",
19 | "theme_color": "#000000",
20 | "background_color": "#212b36"
21 | }
--------------------------------------------------------------------------------
/routes/api/index.js:
--------------------------------------------------------------------------------
1 | const router = require("express").Router();
2 | const attendeesRoutes = require("./attendees");
3 | const workshopsRoutes = require("./workshops");
4 | const checkInRoutes = require("./checkIn");
5 | const registrationRoutes = require("./registration");
6 |
7 | // app routes
8 | router.use("/attendees", attendeesRoutes);
9 | router.use("/workshops", workshopsRoutes);
10 | router.use("/check-in", checkInRoutes)
11 | router.use("/registration", registrationRoutes)
12 |
13 | module.exports = router;
--------------------------------------------------------------------------------
/config/config.json:
--------------------------------------------------------------------------------
1 | {
2 | "development": {
3 | "username": "root",
4 | "password": null,
5 | "database": "evin_db",
6 | "host": "127.0.0.1",
7 | "dialect": "mysql"
8 | },
9 | "test": {
10 | "username": "root",
11 | "password": null,
12 | "database": "database_test",
13 | "host": "127.0.0.1",
14 | "dialect": "mysql"
15 | },
16 | "production": {
17 | "use_env_variable": "JAWSDB_URL",
18 | "dialect": "mysql"
19 | }
20 | }
--------------------------------------------------------------------------------
/client/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "eventsnap",
3 | "version": "0.1.0",
4 | "private": true,
5 | "proxy": "http://localhost:3001/",
6 | "dependencies": {
7 | "react": "^16.0.0",
8 | "react-dom": "^16.0.0",
9 | "react-qr-reader": "^2.0.1",
10 | "react-router-dom": "^4.2.2",
11 | "react-scripts": "1.0.14",
12 | "semantic-ui-css": "^2.2.12",
13 | "semantic-ui-react": "^0.77.0",
14 | "socket.io-client": "^2.0.4"
15 | },
16 | "scripts": {
17 | "start": "react-scripts start",
18 | "build": "react-scripts build",
19 | "test": "react-scripts test --env=jsdom",
20 | "eject": "react-scripts eject"
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/client/src/utils/API.js:
--------------------------------------------------------------------------------
1 | import axios from "axios";
2 |
3 | export default {
4 | // gets all attendees
5 | getAttendees : function () {
6 | return axios.get("/api/attendees");
7 | },
8 | // gets all workshops
9 | getWorkshops : function () {
10 | return axios.get("/api/workshops");
11 | },
12 | // gets one workshop
13 | getOneWorkshop : function (id) {
14 | return axios.get(`/api/workshops/${id}`);
15 | },
16 | // changes checked-in status
17 | checkIn : function (uuid, id) {
18 | return axios.post(`/api/check-in/${uuid}/${id}`);
19 | },
20 | // changes registered status
21 | registration : function (uuid, id) {
22 | return axios.post(`/api/registration/${uuid}`);
23 | }
24 | };
--------------------------------------------------------------------------------
/models/room.js:
--------------------------------------------------------------------------------
1 | // creates a Room model and adds validation to the model
2 | module.exports = function (sequelize, DataTypes) {
3 | var Room = sequelize.define("Room", {
4 | // giving the Room model a name of type STRING
5 | name: {
6 | type: DataTypes.STRING,
7 | allowNull: false,
8 | // the Room's name cannot be null
9 | validate: {
10 | len: [1, 12]
11 | }
12 | },
13 | createdAt: {
14 | type: DataTypes.DATE,
15 | allowNull: false,
16 | defaultValue: sequelize.fn('NOW')
17 | },
18 | updatedAt: {
19 | type: DataTypes.DATE,
20 | allowNull: false,
21 | defaultValue: sequelize.fn('NOW')
22 | }
23 | });
24 |
25 | return Room;
26 | };
--------------------------------------------------------------------------------
/client/public/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 | EventSnap
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
--------------------------------------------------------------------------------
/client/build/index.html:
--------------------------------------------------------------------------------
1 | EventSnap You need to enable JavaScript to run this app.
--------------------------------------------------------------------------------
/models/instructor.js:
--------------------------------------------------------------------------------
1 | // creates an Instructor model and adds validation to the model
2 | module.exports = function (sequelize, DataTypes) {
3 | var Instructor = sequelize.define("Instructor", {
4 | // giving the Instructor model names of type STRING
5 | coupleName: {
6 | type: DataTypes.STRING,
7 | allowNull: false,
8 | // the Instructor's names cannot be null
9 | validate: {
10 | len: [1, 100]
11 | }
12 | },
13 | createdAt: {
14 | type: DataTypes.DATE,
15 | allowNull: false,
16 | defaultValue: sequelize.fn('NOW')
17 | },
18 | updatedAt: {
19 | type: DataTypes.DATE,
20 | allowNull: false,
21 | defaultValue: sequelize.fn('NOW')
22 | }
23 | });
24 |
25 | return Instructor;
26 | };
--------------------------------------------------------------------------------
/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "eventsnap",
3 | "version": "1.0.0",
4 | "description": "eventsnap app",
5 | "main": "server.js",
6 | "scripts": {
7 | "server": "node server.js",
8 | "client": "cd client && npm run start",
9 | "start": "./node_modules/.bin/concurrently \"./node_modules/.bin/nodemon\" \"npm run client\"",
10 | "build": "cd client && npm run build",
11 | "deploy": "yarn build && git add . && git commit -m \"Building for production\" && git push heroku master",
12 | "test": "echo \"Error: no test specified\" && exit 1"
13 | },
14 | "author": "",
15 | "license": "ISC",
16 | "devDependencies": {
17 | "concurrently": "^3.5.0",
18 | "nodemon": "^1.11.0"
19 | },
20 | "dependencies": {
21 | "axios": "^0.17.1",
22 | "express": "^4.15.4",
23 | "mysql2": "^1.5.1",
24 | "sequelize": "^4.22.15",
25 | "socket.io": "^2.0.4"
26 | }
27 | }
28 |
--------------------------------------------------------------------------------
/models/pass-type.js:
--------------------------------------------------------------------------------
1 | // creates a PassType model and adds validation to the model
2 | module.exports = function (sequelize, DataTypes) {
3 | var PassType = sequelize.define("PassType", {
4 | // giving the PassType model a code and a name of type STRING
5 | code: {
6 | type: DataTypes.STRING,
7 | allowNull: false,
8 | // the PassType's code cannot be null
9 | validate: {
10 | len: [1, 12]
11 | }
12 | },
13 | name: {
14 | type: DataTypes.STRING,
15 | allowNull: false,
16 | // the PassType's name cannot be null
17 | validate: {
18 | len: [1, 12]
19 | }
20 | },
21 | createdAt: {
22 | type: DataTypes.DATE,
23 | allowNull: false,
24 | defaultValue: sequelize.fn('NOW')
25 | },
26 | updatedAt: {
27 | type: DataTypes.DATE,
28 | allowNull: false,
29 | defaultValue: sequelize.fn('NOW')
30 | }
31 | });
32 |
33 | return PassType;
34 | };
--------------------------------------------------------------------------------
/controllers/attendeesController.js:
--------------------------------------------------------------------------------
1 | const db = require("../models");
2 |
3 | // Defining methods for the attendeeController
4 | module.exports = {
5 | // writes the new attendee to the database
6 | // attendees are added through Postman
7 | create: function (req, res) {
8 | db.Attendee.create(req.body)
9 | .then(dbModel => res.json(dbModel))
10 | .catch(err => res.status(422).json(err));
11 |
12 | },
13 | // finds all the attendees in the database
14 | findAll: function (req, res) {
15 | db.Attendee.findAll(req.body)
16 | .then(dbModel => res.json(dbModel))
17 | .catch(err => res.status(422).json(err));
18 | },
19 | // removes attendee from the database
20 | // functionality not implemented into the app yet
21 | remove: function (req, res) {
22 | db.Attendee.find({ where: {id: req.params.id }})
23 | .then(dbModel => dbModel.destroy())
24 | .then(dbModel => res.json(dbModel))
25 | .catch(err => res.status(422).json(err));
26 | }
27 | }
--------------------------------------------------------------------------------
/models/index.js:
--------------------------------------------------------------------------------
1 | 'use strict';
2 |
3 | var fs = require('fs');
4 | var path = require('path');
5 | var Sequelize = require('sequelize');
6 | var basename = path.basename(__filename);
7 | var env = process.env.NODE_ENV || 'development';
8 | var config = require(__dirname + '/../config/config.json')[env];
9 | var db = {};
10 |
11 | if (config.use_env_variable) {
12 | var sequelize = new Sequelize(process.env[config.use_env_variable], config);
13 | } else {
14 | var sequelize = new Sequelize(config.database, config.username, config.password, config);
15 | }
16 |
17 | fs
18 | .readdirSync(__dirname)
19 | .filter(file => {
20 | return (file.indexOf('.') !== 0) && (file !== basename) && (file.slice(-3) === '.js');
21 | })
22 | .forEach(file => {
23 | var model = sequelize['import'](path.join(__dirname, file));
24 | db[model.name] = model;
25 | });
26 |
27 | Object.keys(db).forEach(modelName => {
28 | if (db[modelName].associate) {
29 | db[modelName].associate(db);
30 | }
31 | });
32 |
33 | db.sequelize = sequelize;
34 | db.Sequelize = Sequelize;
35 |
36 | module.exports = db;
37 |
--------------------------------------------------------------------------------
/client/src/pages/Home/Home.js:
--------------------------------------------------------------------------------
1 | import React, {Component} from 'react'
2 | import {Container, Button, Header, Image} from 'semantic-ui-react'
3 | import {Link} from 'react-router-dom'
4 |
5 | class Home extends Component {
6 |
7 | render() {
8 | return (
9 |
10 |
13 |
14 |
15 | Easier and faster to greet event participants. Simple guest registration.
16 | Customized QR-code check-in experience and data management in Real-Time.
17 |
18 |
19 |
20 | Register
21 |
22 |
23 |
24 | Check-In
25 |
26 |
27 |
28 | )
29 | }
30 | }
31 |
32 | export default Home;
--------------------------------------------------------------------------------
/client/src/components/DropdownCustom/DropdownCustom.js:
--------------------------------------------------------------------------------
1 | import React, { Component } from 'react'
2 | import { Dropdown, Grid, Segment } from 'semantic-ui-react'
3 |
4 | const options = [
5 | { key: 1, text: 'One', value: 1 },
6 | { key: 2, text: 'Two', value: 2 },
7 | { key: 3, text: 'Three', value: 3 },
8 | ]
9 |
10 | // react component rendered on the check-in page
11 | export default class DropdownCustom extends Component {
12 | state = {}
13 |
14 | handleChange = (e, { value }) => this.setState({ value })
15 |
16 | render() {
17 | const { value } = this.state
18 |
19 | return (
20 |
21 |
22 |
29 |
30 |
31 |
32 | Current value: {value}
33 |
34 |
35 |
36 | )
37 | }
38 | }
--------------------------------------------------------------------------------
/controllers/workshopsController.js:
--------------------------------------------------------------------------------
1 | const db = require("../models");
2 |
3 | // Defining methods for the workshopsController
4 | module.exports = {
5 | // finds all the workshops in the database
6 | findAll: function (req, res) {
7 | db.Workshop
8 | .findAll({ include: [{ model: db.Instructor }]})
9 | .then(dbModel => res.json(dbModel))
10 | .catch(err => res.status(422).json(err));
11 | },
12 | // finds One workshop in the database & includes Instructor
13 | findWorkshop: function (req, res) {
14 | // console.log('entered here')
15 | db.Workshop
16 | .findOne({
17 | include: [{model: db.Instructor}],
18 | where:
19 | {
20 | id: req.params.id
21 | }
22 | })
23 | .then(workshop => {
24 | // finds all class selections for that workshop & includes Attendees
25 | db.WorkshopSelection
26 | .findAll({
27 | where: {
28 | WorkshopId: req.params.id
29 | },
30 | include: [db.Attendee]
31 | })
32 | .then(result => {
33 | res.json({ workshop, result })
34 | })
35 | })
36 | .catch(err => res.status(422).json(err));
37 | }
38 | }
--------------------------------------------------------------------------------
/models/workshop-selection.js:
--------------------------------------------------------------------------------
1 | // creates a WorkshopSelection model and adds validation to the model
2 | module.exports = function (sequelize, DataTypes) {
3 | var WorkshopSelection = sequelize.define("WorkshopSelection", {
4 | // giving the WorkshopSelection model a code and a name of type STRING
5 | checkedIn: {
6 | type: DataTypes.BOOLEAN,
7 | defaultValue: false
8 | },
9 | createdAt: {
10 | type: DataTypes.DATE,
11 | allowNull: false,
12 | defaultValue: sequelize.fn('NOW')
13 | },
14 | updatedAt: {
15 | type: DataTypes.DATE,
16 | allowNull: false,
17 | defaultValue: sequelize.fn('NOW')
18 | }
19 | });
20 |
21 | WorkshopSelection.associate = function (models) {
22 | // each WorkshopSelection belongs to a Workshop/ sets Workshop as foreign key constraint
23 | WorkshopSelection.belongsTo(models.Workshop, {
24 | foreignKey: {
25 | allowNull: false
26 | },
27 | onDelete: "cascade"
28 |
29 | });
30 | // each WorkshopSelection belongs to a Attendee/ sets Attendee as foreign key constraint
31 | WorkshopSelection.belongsTo(models.Attendee, {
32 | foreignKey: {
33 | allowNull: false
34 | },
35 | onDelete: "cascade"
36 | });
37 |
38 | };
39 |
40 | return WorkshopSelection;
41 | };
--------------------------------------------------------------------------------
/controllers/registrationController.js:
--------------------------------------------------------------------------------
1 | const db = require("../models");
2 |
3 | // Defining methods for the registrationController
4 | module.exports = {
5 | // updates one attendee when registering
6 | update: function (req, res) {
7 | db.Attendee
8 | // find one attendee
9 | .find({
10 | where: {
11 | uuid: req.params.uuid
12 | }
13 | })
14 | .then((attendee) => {
15 | if (!attendee) {
16 | console.log('workshop not found')
17 | res.json({success: false, error: 'Attendee not found'})
18 | } else if (attendee.dataValues.registered === false) {
19 | console.log(attendee.dataValues.id)
20 | db.Attendee
21 | .update({
22 | registered: 1 // true
23 | }, {
24 | where: {
25 | id: attendee.dataValues.id
26 | }
27 | })
28 | .then(result => res.json({success: true, result: result}))
29 | } else if (attendee.registered === true) {
30 | console.log("You are already registered")
31 | res.json({success: false, error: 'Already Registered!'})
32 | }
33 | })
34 | .catch(err => res.status(422).json(err))
35 | }
36 | }
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # EventSnap
2 |
3 | ### Overview
4 |
5 | [EventSnap](https://eventsnap.herokuapp.com/) is a QR code generator and reader full-stack WebApp that allows event organizers register guests and monitor custom check-ins in real-time.
6 |
7 |
8 | 
9 |
10 |
11 | ### Goal
12 |
13 | * contribute to the community while getting more hands-on experience on building fun apps
14 | * create an app that helps organizers plan their event/workshops ahead
15 | * easy event registration, workshop check-in and monitoring
16 |
17 | ### Technologies:
18 |
19 | * Front-End Technologies Used:
20 | * `react.js` to render HTML,
21 | * `QR code generator web API` to create QR Code images,
22 | * `QR code reader react component` for reading QR code using the webcam,
23 | * `react-semantic-ui` development framework for responsive layout
24 | * `custom css` and `branding`
25 |
26 | * Back-end Technologies Used:
27 | * `node.js/express` for server connection,
28 | * `mySQL/sequelize` to query and route data,
29 | * following `MVC` design patterns,
30 | * `socket.io` for real-time communication.
31 |
32 | * Heroku Deployment: [EventSnap](https://eventsnap.herokuapp.com/)
33 |
34 |
35 | ### User Story
36 |
37 | 
38 |
39 |
40 | ### Schema
41 |
42 | 
43 |
44 | ### Landing Screen with Slide-in Menu Bar
45 |
46 | 
47 |
48 |
49 | ### Real-Time Data Monitoring Screen
50 |
51 | 
52 |
53 |
54 |
55 | ### :sparkles: Like it?!?
56 |
--------------------------------------------------------------------------------
/server.js:
--------------------------------------------------------------------------------
1 | // npm packages required / dependencies
2 | const express = require("express");
3 | const bodyParser = require("body-parser");
4 | const routes = require("./routes")
5 |
6 | // sets up the Express App
7 | const app = require("express")();
8 | // sets the environment variable PORT to tell the web server what port to listen on
9 | const PORT = process.env.PORT || 3001;
10 |
11 | // serves up static assets (usually on heroku)
12 | if (process.env.NODE_ENV === "production") {
13 | app.use(express.static("client/build"));
14 | }
15 |
16 | // configures body parser for AJAX requests and
17 | // sets up the Express app to handle data parsing
18 | app.use(bodyParser.urlencoded({ extended: true }));
19 | app.use(bodyParser.json());
20 | app.use(bodyParser.text());
21 | app.use(bodyParser.json({ type: "application/vnd.api+json" }));
22 |
23 | // adds routes, both API and view
24 | app.use(routes);
25 |
26 | // requires models for syncing
27 | var db = require("./models")
28 |
29 | // integrates socket.io
30 | const http = require('http').Server(app);
31 | // initializes a new instance of socket.io
32 | // by passing the http (the HTTP server) object
33 | const io = require('socket.io')(http);
34 | // listens on the connection event for incoming sockets,
35 | // and logs it to the console.
36 | io.on('connection', function (socket) {
37 | console.log('a user connected');
38 | // listens on 'checkIn' event
39 | socket.on('checkIn', function (id) {
40 | console.log('checked in into workshop: ' + id);
41 | // sends id to everyone except for a certain socket
42 | // uses broadcast flag
43 | socket.broadcast.emit('checkedIn', id);
44 | });
45 | // socket.on('disconnect', function () {
46 | // console.log('Got disconnect!');
47 | // });
48 | });
49 |
50 | // syncs the sequelize models and then connects the Express app
51 | db.sequelize.sync().then(function () {
52 | http.listen(PORT, function () {
53 | console.log(`🌎 ==> Server now on port ${PORT}!`);
54 | });
55 | });
56 |
57 |
--------------------------------------------------------------------------------
/controllers/checkInController.js:
--------------------------------------------------------------------------------
1 | const db = require("../models");
2 |
3 | // Defining methods for the checkInController
4 | module.exports = {
5 | // updates one attendee when checking in
6 | update: (req, res) => {
7 | // console.log(req.params.uuid)
8 | db.Attendee
9 | .find({
10 | where: {
11 | uuid: req.params.uuid
12 | }
13 | })
14 | .then((attendee) => {
15 | if (!attendee) {
16 | res.status(404).json('Attendee not found')
17 | }
18 | db.WorkshopSelection
19 | // finds one attendee with one workshop selection
20 | .find({
21 | where: {
22 | AttendeeId: attendee.id,
23 | WorkshopId: req.params.id
24 | }
25 | })
26 | .then((workshop) => {
27 | if (workshop && workshop.checkedIn === false) {
28 | db.WorkshopSelection
29 | .update({
30 | checkedIn: 1 // true
31 | }, {
32 | where: {
33 | AttendeeId: attendee.id,
34 | WorkshopId: req.params.id
35 | }
36 | })
37 | .then(result => res.json({success: true, result: result}))
38 | } else if (!workshop) {
39 | res.json({success: false, error: 'Workshop Selection Not Found!'})
40 | } else {
41 | res.json({success: false, error: 'Already Checked-in!'})
42 | }
43 | })
44 | })
45 | .catch(err => res.status(422).json(err));
46 | }
47 | }
--------------------------------------------------------------------------------
/models/workshop.js:
--------------------------------------------------------------------------------
1 | // creates a Workshop model and adds validation to the model
2 | module.exports = function (sequelize, DataTypes) {
3 | var Workshop = sequelize.define("Workshop", {
4 | // giving the Workshop model a code and title of type STRING
5 | code: {
6 | type: DataTypes.STRING,
7 | allowNull: false,
8 | // the Workshop's code cannot be null
9 | validate: {
10 | len: [1, 12]
11 | }
12 | },
13 | title: {
14 | type: DataTypes.STRING,
15 | allowNull: false,
16 | // the Workshop's title cannot be null
17 | validate: {
18 | len: [1, 255]
19 | }
20 | },
21 | day: {
22 | type: DataTypes.STRING,
23 | allowNull: false
24 | },
25 | timeFrame: {
26 | type: DataTypes.STRING,
27 | allowNull: false
28 | },
29 | maxSeat: {
30 | type: DataTypes.INTEGER,
31 | allowNull: false
32 | },
33 | skillLevel: {
34 | type: DataTypes.STRING,
35 | allowNull: false
36 | },
37 | createdAt: {
38 | type: DataTypes.DATE,
39 | allowNull: false,
40 | defaultValue: sequelize.fn('NOW')
41 | },
42 | updatedAt: {
43 | type: DataTypes.DATE,
44 | allowNull: false,
45 | defaultValue: sequelize.fn('NOW')
46 | }
47 | });
48 |
49 | Workshop.associate = function (models) {
50 | // each Workshop belongs to a Instructor sets Instructor as foreign key
51 | // constraint
52 | Workshop.belongsTo(models.Instructor, {
53 | foreignKey: {
54 | allowNull: false
55 | }
56 | });
57 | // each Workshop belongs to a Room sets Room as foreign key constraint
58 | Workshop.belongsTo(models.Room, {
59 | foreignKey: {
60 | allowNull: false
61 | }
62 | });
63 |
64 | };
65 |
66 | return Workshop;
67 | };
--------------------------------------------------------------------------------
/client/build/static/css/main.b5408d31.css:
--------------------------------------------------------------------------------
1 | *{-webkit-box-sizing:border-box;box-sizing:border-box}body{color:#fff;background:#284666 url("/img/grid.png")}.ui.header,.ui.list .item .header,.ui.menu,body,h1.header,h2.header,h3.header{font-family:Roboto,sans-serif}h1.ui.inverted.header{font-size:3em;margin:76px 0 30px}h2.ui.inverted.header{margin:50px 0 30px}.ui.item.menu{margin-bottom:0;border-radius:0}.ui.fluid.three.item.menu #logo{font-family:Kalam,cursive;font-size:24px}#logo span,span#logo{font-family:Kalam,cursive}#logo span{color:#f95f7b}.ui.fluid.three.item.menu .item{font-size:18px}.ui.segment.pushable{background:#212b36 url("/img/grid.png");min-height:50em;margin-top:0;border-radius:0}.ui.container{width:70%}.ui.container p{letter-spacing:1.3px;font-size:20px;line-height:40px}.ui.modal p{font-size:10px}.ui.buttons{margin-top:50px}.ui.positive.button{background-color:#38b5b5}.ui.inverted.list .item.card h2.header a{color:#38b5b5!important}.ui.positive.button:hover{background-color:#329fa3}.ui.inverted.list .item.card h2.header a:hover{color:#329fa3!important}.ui.inverted.list .item.card h3.header{margin-bottom:20px}.ui.divided.inverted.list .item.badge-card,.ui.divided.inverted.list .item.card{padding:30px;margin-bottom:20px;background-color:#2d3948;-webkit-box-shadow:0 4px 8px 0 rgba(0,0,0,.2),0 6px 20px 0 rgba(0,0,0,.19);box-shadow:0 4px 8px 0 rgba(0,0,0,.2),0 6px 20px 0 rgba(0,0,0,.19)}.ui.divided.inverted.list .item.badge-card{padding:20px;display:inline-block;text-align:center;width:300px;height:400px;margin-right:30px}.ui.divided.inverted.list .item.badge-card img{margin:30px auto}.ui.divided.inverted.list .item.badge-card .list .item,.ui.divided.inverted.list .item.card .list .item{margin-bottom:5px}.ui.divided.inverted.list .item.badge-card .list .item:last-child,.ui.divided.inverted.list .item.card .list .item:last-child{text-transform:uppercase;margin-top:2px;font-weight:700;font-size:16px}ui.inverted.four.statistics.card{background-color:#2d3948}.container .centerBox{-webkit-box-shadow:0 4px 8px 0 rgba(0,0,0,.2),0 6px 20px 0 rgba(0,0,0,.19);box-shadow:0 4px 8px 0 rgba(0,0,0,.2),0 6px 20px 0 rgba(0,0,0,.19)}.ui.modal .center-text.content{text-align:center;margin-top:100px}.ui.modal .center-text.content p{font-size:28px}.ui.small.image.qrImage{margin-right:30px}.list.item{margin:5px 0}.ui.inverted.four.statistics{margin:20px 0 10px}@media print{*,.ui.divided.inverted.list .item.badge-card,.ui.inverted.list .item .header,.ui.segment.pushable,body,html{background-color:#fff;color:#000}.ui.item.menu{display:none}.ui.container{width:100%}}
2 | /*# sourceMappingURL=main.b5408d31.css.map*/
--------------------------------------------------------------------------------
/client/src/pages/Attendees/Attendees.js:
--------------------------------------------------------------------------------
1 | import React, {Component} from 'react'
2 | import {Container, List, Header} from 'semantic-ui-react'
3 | import API from "../../utils/API";
4 |
5 | export default class Attendees extends Component {
6 | state = {
7 | attendees: []
8 | }
9 |
10 | componentDidMount() {
11 | this.loadAttendees();
12 | }
13 |
14 | loadAttendees = () => {
15 | API
16 | .getAttendees()
17 | .then(res => {
18 | console.log(res)
19 | this.setState({attendees: res.data})
20 | })
21 | .catch(err => console.log(err))
22 | }
23 |
24 | attendeeRender() {
25 | return this
26 | .state
27 | .attendees
28 | .map(attendee => (
29 |
30 |
37 |
38 |
39 | {attendee.firstName + " " + attendee.lastName}
40 |
41 |
42 |
43 |
48 |
49 |
50 |
51 |
52 |
53 |
54 |
55 | ))
56 | }
57 |
58 | render() {
59 |
60 | return (
61 |
62 |
63 | Event Attendees
64 |
65 | {this.state.attendees.length
66 | ? (
67 |
68 | {this.attendeeRender()}
69 |
70 | )
71 | : (
72 | No Results to Display
73 | )}
74 |
75 | )
76 | }
77 | }
--------------------------------------------------------------------------------
/client/src/pages/BadgeGeneration/BadgeGeneration.js:
--------------------------------------------------------------------------------
1 | import React, {Component} from "react";
2 | import {Container, List, Image, Header} from 'semantic-ui-react'
3 | import API from "../../utils/API";
4 |
5 | class BadgeGeneration extends Component {
6 | state = {
7 | attendees: []
8 | }
9 |
10 | componentDidMount() {
11 | this.loadAttendees();
12 | }
13 |
14 | loadAttendees = () => {
15 | API
16 | .getAttendees()
17 | .then(res => {
18 | console.log(res)
19 | this.setState({attendees: res.data})
20 | })
21 | .catch(err => console.log(err))
22 | }
23 |
24 | render() {
25 | return (
26 |
27 |
28 | Print Event Badges (CTRL + P)
29 |
30 | {this.state.attendees.length
31 | ? (
32 |
33 | {this
34 | .state
35 | .attendees
36 | .map(attendee => (
37 |
38 |
39 |
45 |
46 | {attendee.firstName + " " + attendee.lastName}
47 |
48 |
49 |
50 |
51 |
52 |
53 |
54 |
55 |
56 | ))}
57 |
58 | )
59 | : (
60 | No Results to Display
61 | )}
62 |
63 | )
64 | }
65 | }
66 |
67 | export default BadgeGeneration;
--------------------------------------------------------------------------------
/client/build/service-worker.js:
--------------------------------------------------------------------------------
1 | "use strict";function setOfCachedUrls(e){return e.keys().then(function(e){return e.map(function(e){return e.url})}).then(function(e){return new Set(e)})}var precacheConfig=[["/index.html","dc49f8c671806ef69a00d8fe04152b1b"],["/static/css/main.b5408d31.css","f5eb4d749931928f6a982a6a02a285a2"],["/static/js/main.37b459b1.js","f676b9fc079c2a9f26536aa800048e28"]],cacheName="sw-precache-v3-sw-precache-webpack-plugin-"+(self.registration?self.registration.scope:""),ignoreUrlParametersMatching=[/^utm_/],addDirectoryIndex=function(e,t){var n=new URL(e);return"/"===n.pathname.slice(-1)&&(n.pathname+=t),n.toString()},cleanResponse=function(e){if(!e.redirected)return Promise.resolve(e);return("body"in e?Promise.resolve(e.body):e.blob()).then(function(t){return new Response(t,{headers:e.headers,status:e.status,statusText:e.statusText})})},createCacheKey=function(e,t,n,r){var a=new URL(e);return r&&a.pathname.match(r)||(a.search+=(a.search?"&":"")+encodeURIComponent(t)+"="+encodeURIComponent(n)),a.toString()},isPathWhitelisted=function(e,t){if(0===e.length)return!0;var n=new URL(t).pathname;return e.some(function(e){return n.match(e)})},stripIgnoredUrlParameters=function(e,t){var n=new URL(e);return n.hash="",n.search=n.search.slice(1).split("&").map(function(e){return e.split("=")}).filter(function(e){return t.every(function(t){return!t.test(e[0])})}).map(function(e){return e.join("=")}).join("&"),n.toString()},hashParamName="_sw-precache",urlsToCacheKeys=new Map(precacheConfig.map(function(e){var t=e[0],n=e[1],r=new URL(t,self.location),a=createCacheKey(r,hashParamName,n,/\.\w{8}\./);return[r.toString(),a]}));self.addEventListener("install",function(e){e.waitUntil(caches.open(cacheName).then(function(e){return setOfCachedUrls(e).then(function(t){return Promise.all(Array.from(urlsToCacheKeys.values()).map(function(n){if(!t.has(n)){var r=new Request(n,{credentials:"same-origin"});return fetch(r).then(function(t){if(!t.ok)throw new Error("Request for "+n+" returned a response with status "+t.status);return cleanResponse(t).then(function(t){return e.put(n,t)})})}}))})}).then(function(){return self.skipWaiting()}))}),self.addEventListener("activate",function(e){var t=new Set(urlsToCacheKeys.values());e.waitUntil(caches.open(cacheName).then(function(e){return e.keys().then(function(n){return Promise.all(n.map(function(n){if(!t.has(n.url))return e.delete(n)}))})}).then(function(){return self.clients.claim()}))}),self.addEventListener("fetch",function(e){if("GET"===e.request.method){var t,n=stripIgnoredUrlParameters(e.request.url,ignoreUrlParametersMatching),r="index.html";(t=urlsToCacheKeys.has(n))||(n=addDirectoryIndex(n,r),t=urlsToCacheKeys.has(n));var a="/index.html";!t&&"navigate"===e.request.mode&&isPathWhitelisted(["^(?!\\/__).*"],e.request.url)&&(n=new URL(a,self.location).toString(),t=urlsToCacheKeys.has(n)),t&&e.respondWith(caches.open(cacheName).then(function(e){return e.match(urlsToCacheKeys.get(n)).then(function(e){if(e)return e;throw Error("The cached response that was expected is missing.")})}).catch(function(t){return console.warn('Couldn\'t serve response for "%s" from cache: %O',e.request.url,t),fetch(e.request)}))}});
--------------------------------------------------------------------------------
/client/src/pages/Workshops/Workshops.js:
--------------------------------------------------------------------------------
1 | import React, {Component} from 'react'
2 | import {Container, List, Header} from 'semantic-ui-react'
3 | import API from "../../utils/API";
4 |
5 | class Workshops extends Component {
6 |
7 | state = {
8 | workshops: []
9 | }
10 | componentDidMount() {
11 | this.loadWorkshops()
12 | }
13 |
14 | loadWorkshops = () => {
15 | API
16 | .getWorkshops()
17 | .then(workshops => {
18 | console.log(workshops)
19 | this.setState({workshops: workshops.data})
20 | })
21 | .catch(err => console.log(err));
22 | }
23 |
24 | render() {
25 |
26 | return (
27 |
28 |
29 |
30 | Event Workshops
31 |
32 | {this.state.workshops.length
33 | ? (
34 |
35 | {this.state.workshops
36 | .map(workshop => (
37 |
38 |
39 |
40 |
41 | {workshop.code}: {workshop.title}
42 |
43 |
44 |
45 |
46 |
49 |
50 |
51 |
52 |
53 |
54 |
55 |
56 | ))}
57 |
58 |
59 | )
60 | : (
61 | No Results to Display
62 | )
63 | }
64 |
65 |
66 | )
67 | }
68 | }
69 |
70 | export default Workshops
--------------------------------------------------------------------------------
/models/attendee.js:
--------------------------------------------------------------------------------
1 | // creates an Attendee model and adds validation to the model
2 | module.exports = function (sequelize, DataTypes) {
3 | var Attendee = sequelize.define("Attendee", {
4 | // giving the Attendee model a name of type STRING
5 | firstName: {
6 | type: DataTypes.STRING,
7 | allowNull: false,
8 | // the Attendee's first name cannot be null
9 | validate: {
10 | len: [1, 50]
11 | }
12 | },
13 | lastName: {
14 | type: DataTypes.STRING,
15 | allowNull: false,
16 | // the Attendee's last name cannot be null
17 | validate: {
18 | len: [1, 50]
19 | }
20 | },
21 | email: {
22 | type: DataTypes.STRING,
23 | allowNull: false,
24 | // the Attendee's email cannot be null
25 | validate: {
26 | len: [1, 50]
27 | }
28 | },
29 | city: {
30 | type: DataTypes.STRING,
31 | allowNull: false,
32 | // the Attendee's city cannot be null
33 | validate: {
34 | len: [1, 50]
35 | }
36 | },
37 | state: {
38 | type: DataTypes.STRING,
39 | allowNull: false,
40 | // the Attendee's state cannot be null
41 | validate: {
42 | len: [1, 50]
43 | }
44 | },
45 | // the Attendee's unique identifier cannot be null
46 | uuid: {
47 | type: DataTypes.UUID,
48 | defaultValue: DataTypes.UUIDV1,
49 | allowNull: false
50 | },
51 | dancerType: {
52 | // the Attendee's dancerType: Lead or Follower
53 | type: DataTypes.STRING,
54 | allowNull: false,
55 | validate: {
56 | len: [1, 12]
57 | }
58 | },
59 | // nedded when class selection form is sent to the attenddee functionality not
60 | // implemented, yet
61 | emailSent: {
62 | type: DataTypes.BOOLEAN,
63 | defaultValue: false
64 |
65 | },
66 | // functionality not implemented, yet
67 | formCompleted: {
68 | type: DataTypes.BOOLEAN,
69 | defaultValue: false
70 |
71 | },
72 | // functionality not implemented, yet
73 | badgePrinted: {
74 | type: DataTypes.BOOLEAN,
75 | defaultValue: false
76 | },
77 | // sets the registered datatype for the attendee
78 | registered: {
79 | type: DataTypes.BOOLEAN,
80 | defaultValue: false
81 | },
82 | createdAt: {
83 | type: DataTypes.DATE,
84 | allowNull: false,
85 | defaultValue: sequelize.fn('NOW')
86 | },
87 | updatedAt: {
88 | type: DataTypes.DATE,
89 | allowNull: false,
90 | defaultValue: sequelize.fn('NOW')
91 | }
92 | });
93 |
94 | Attendee.associate = function (models) {
95 | // each Attendee belongs to a PassType sets PassType as foreign key constraint
96 | Attendee.belongsTo(models.PassType, {
97 | foreignKey: {
98 | allowNull: false
99 | }
100 | });
101 | };
102 |
103 | return Attendee;
104 | };
--------------------------------------------------------------------------------
/client/src/pages/Main/Main.css:
--------------------------------------------------------------------------------
1 | * {
2 | box-sizing: border-box;
3 | }
4 |
5 | body {
6 | color: #fff;
7 | background: rgb(40, 70, 102) url('/img/grid.png');
8 | font-family: 'Roboto', sans-serif;}
9 |
10 | h1.header, h2.header, h3.header,
11 | .ui.header,
12 | .ui.list .item .header,
13 | .ui.menu {
14 | font-family: 'Roboto', sans-serif;
15 | }
16 |
17 | h1.ui.inverted.header {
18 | font-size: 3em;
19 | margin: 76px 0 30px;
20 | }
21 |
22 | h2.ui.inverted.header {
23 | margin: 50px 0 30px 0;
24 | }
25 |
26 | .ui.item.menu {
27 | margin-bottom: 0;
28 | border-radius: 0;
29 | }
30 |
31 | .ui.fluid.three.item.menu #logo {
32 | font-family: 'Kalam', cursive;
33 | font-size: 24px;
34 | }
35 |
36 | span#logo {
37 | font-family: 'Kalam', cursive;
38 | }
39 |
40 | #logo span{
41 | font-family: 'Kalam', cursive;
42 | color: #f95f7b
43 | }
44 |
45 | .ui.fluid.three.item.menu .item{
46 | font-size: 18px;
47 | }
48 |
49 | .ui.segment.pushable {
50 | background: #212b36 url('/img/grid.png');
51 | min-height:50em;
52 | margin-top: 0;
53 | border-radius: 0;
54 | }
55 |
56 | .ui.container{
57 | width: 70%;
58 | }
59 |
60 | .ui.container p {
61 | letter-spacing: 1.3px;
62 | font-size: 20px;
63 | line-height: 40px;
64 | }
65 |
66 | .ui.modal p{
67 | font-size: 10px;
68 | }
69 |
70 | .ui.buttons {
71 | margin-top: 50px;
72 | }
73 |
74 | .ui.positive.button{
75 | background-color: #38b5b5;
76 | }
77 |
78 | .ui.inverted.list .item.card h2.header a {
79 | color: #38b5b5 !important;
80 | }
81 |
82 | .ui.positive.button:hover{
83 | background-color: #329FA3;
84 | }
85 |
86 | .ui.inverted.list .item.card h2.header a:hover {
87 | color: #329FA3 !important;
88 | }
89 |
90 | .ui.inverted.list .item.card h3.header {
91 | margin-bottom: 20px;
92 | }
93 |
94 | .ui.divided.inverted.list .item.card,
95 | .ui.divided.inverted.list .item.badge-card {
96 | padding: 30px;
97 | margin-bottom: 20px;
98 | background-color: #2d3948;
99 | box-shadow: 0 4px 8px 0 rgba(0, 0, 0, 0.2), 0 6px 20px 0 rgba(0, 0, 0, 0.19);
100 | }
101 |
102 | .ui.divided.inverted.list .item.badge-card {
103 | padding: 20px;
104 | }
105 |
106 | .ui.divided.inverted.list .item.badge-card {
107 | display: inline-block;
108 | text-align: center;
109 | width: 300px;
110 | height: 400px;
111 | margin-right: 30px;
112 | }
113 |
114 | .ui.divided.inverted.list .item.badge-card img{
115 | margin: 30px auto 30px
116 | }
117 |
118 | .ui.divided.inverted.list .item.badge-card .list .item,
119 | .ui.divided.inverted.list .item.card .list .item{
120 | margin-bottom: 5px
121 | }
122 |
123 | .ui.divided.inverted.list .item.badge-card .list .item:last-child,
124 | .ui.divided.inverted.list .item.card .list .item:last-child{
125 | text-transform: uppercase;
126 | margin-top: 2px;
127 | font-weight: bold;
128 | font-size: 16px;
129 | }
130 |
131 | ui.inverted.four.statistics.card {
132 | background-color: #2d3948;
133 | }
134 |
135 | .container .centerBox {
136 | box-shadow: 0 4px 8px 0 rgba(0, 0, 0, 0.2), 0 6px 20px 0 rgba(0, 0, 0, 0.19);
137 | }
138 |
139 | .ui.modal .center-text.content {
140 | text-align: center;
141 | margin-top: 100px
142 | }
143 |
144 | .ui.modal .center-text.content p{
145 | font-size: 28px;
146 | }
147 |
148 | .ui.small.image.qrImage{
149 | margin-right: 30px;
150 | }
151 |
152 | .list.item {
153 | margin: 5px 0;
154 | }
155 |
156 | .ui.inverted.four.statistics {
157 | margin: 20px 0 10px
158 | }
159 |
160 | /* sets media print query to print badges */
161 | @media print {
162 | *, body, html,
163 | .ui.segment.pushable,
164 | .ui.divided.inverted.list .item.badge-card,
165 | .ui.inverted.list .item .header {
166 | background-color: #fff;
167 | color: #000;
168 | }
169 | .ui.item.menu {
170 | display: none;
171 | }
172 | .ui.container{
173 | width: 100%;
174 | }
175 | }
--------------------------------------------------------------------------------
/client/build/static/css/main.b5408d31.css.map:
--------------------------------------------------------------------------------
1 | {"version":3,"sources":["pages/Main/Main.css"],"names":[],"mappings":"AAAA,EACI,8BACQ,qBAAuB,CAGnC,KACI,WACA,uCAAkD,CAGtD,8EAFI,6BAAkC,CAStC,sBACI,cACA,kBAAoB,CAGxB,sBACI,kBAAsB,CAG1B,cACI,gBACA,eAAiB,CAGrB,gCACI,0BACA,cAAgB,CAOpB,qBAHI,yBAA8B,CAMjC,WADG,aAAc,CAGlB,gCACQ,cAAgB,CAGxB,qBACI,wCACA,gBACA,aACA,eAAiB,CAGrB,cACI,SAAW,CAGf,gBACI,qBACA,eACA,gBAAkB,CAGtB,YACI,cAAgB,CAGpB,YACI,eAAiB,CAGrB,oBACI,wBAA0B,CAG9B,yCACI,uBAA0B,CAG9B,0BACI,wBAA0B,CAG9B,+CACI,uBAA0B,CAG9B,uCACI,kBAAoB,CAGxB,gFAEI,aACA,mBACA,yBACA,2EACQ,kEAA6E,CAGzF,2CACI,aAIA,qBACA,kBACA,YACA,aACA,iBAAmB,CAGvB,+CACI,gBAAsB,CAG1B,wGAEI,iBAAkB,CAGtB,8HAEI,yBACA,eACA,gBACA,cAAgB,CAGpB,iCACI,wBAA0B,CAG9B,sBACK,2EACQ,kEAA6E,CAG1F,+BACI,kBACA,gBAAiB,CAGrB,iCACI,cAAgB,CAGpB,wBACI,iBAAmB,CAGvB,WACI,YAAc,CAGlB,6BACI,kBAAmB,CAGvB,aACI,4GAII,sBACA,UAAY,CAEhB,cACI,YAAc,CAElB,cACI,UAAY,CACf","file":"static/css/main.b5408d31.css","sourcesContent":["* {\n -webkit-box-sizing: border-box;\n box-sizing: border-box;\n}\n\nbody {\n color: #fff;\n background: rgb(40, 70, 102) url('/img/grid.png');\n font-family: 'Roboto', sans-serif;}\n\nh1.header, h2.header, h3.header,\n.ui.header,\n.ui.list .item .header,\n.ui.menu {\n font-family: 'Roboto', sans-serif;\n}\n\nh1.ui.inverted.header {\n font-size: 3em;\n margin: 76px 0 30px;\n}\n\nh2.ui.inverted.header {\n margin: 50px 0 30px 0;\n}\n\n.ui.item.menu {\n margin-bottom: 0;\n border-radius: 0;\n}\n\n.ui.fluid.three.item.menu #logo {\n font-family: 'Kalam', cursive;\n font-size: 24px;\n}\n\nspan#logo {\n font-family: 'Kalam', cursive;\n}\n\n#logo span{\n font-family: 'Kalam', cursive;\n color: #f95f7b\n}\n\n.ui.fluid.three.item.menu .item{\n font-size: 18px;\n}\n\n.ui.segment.pushable {\n background: #212b36 url('/img/grid.png');\n min-height:50em;\n margin-top: 0;\n border-radius: 0;\n}\n\n.ui.container{\n width: 70%;\n}\n\n.ui.container p {\n letter-spacing: 1.3px;\n font-size: 20px;\n line-height: 40px;\n}\n\n.ui.modal p{\n font-size: 10px;\n}\n\n.ui.buttons {\n margin-top: 50px;\n}\n\n.ui.positive.button{\n background-color: #38b5b5;\n}\n\n.ui.inverted.list .item.card h2.header a {\n color: #38b5b5 !important;\n}\n\n.ui.positive.button:hover{\n background-color: #329FA3;\n}\n\n.ui.inverted.list .item.card h2.header a:hover {\n color: #329FA3 !important;\n}\n\n.ui.inverted.list .item.card h3.header {\n margin-bottom: 20px;\n}\n\n.ui.divided.inverted.list .item.card,\n.ui.divided.inverted.list .item.badge-card {\n padding: 30px;\n margin-bottom: 20px;\n background-color: #2d3948;\n -webkit-box-shadow: 0 4px 8px 0 rgba(0, 0, 0, 0.2), 0 6px 20px 0 rgba(0, 0, 0, 0.19);\n box-shadow: 0 4px 8px 0 rgba(0, 0, 0, 0.2), 0 6px 20px 0 rgba(0, 0, 0, 0.19);\n}\n\n.ui.divided.inverted.list .item.badge-card {\n padding: 20px;\n}\n\n.ui.divided.inverted.list .item.badge-card {\n display: inline-block;\n text-align: center;\n width: 300px;\n height: 400px;\n margin-right: 30px;\n}\n\n.ui.divided.inverted.list .item.badge-card img{\n margin: 30px auto 30px\n}\n\n.ui.divided.inverted.list .item.badge-card .list .item,\n.ui.divided.inverted.list .item.card .list .item{\n margin-bottom: 5px\n}\n\n.ui.divided.inverted.list .item.badge-card .list .item:last-child,\n.ui.divided.inverted.list .item.card .list .item:last-child{\n text-transform: uppercase;\n margin-top: 2px;\n font-weight: bold;\n font-size: 16px;\n}\n\nui.inverted.four.statistics.card {\n background-color: #2d3948;\n}\n\n.container .centerBox {\n -webkit-box-shadow: 0 4px 8px 0 rgba(0, 0, 0, 0.2), 0 6px 20px 0 rgba(0, 0, 0, 0.19);\n box-shadow: 0 4px 8px 0 rgba(0, 0, 0, 0.2), 0 6px 20px 0 rgba(0, 0, 0, 0.19);\n}\n\n.ui.modal .center-text.content {\n text-align: center;\n margin-top: 100px\n}\n\n.ui.modal .center-text.content p{\n font-size: 28px;\n}\n\n.ui.small.image.qrImage{\n margin-right: 30px;\n}\n\n.list.item {\n margin: 5px 0;\n}\n\n.ui.inverted.four.statistics {\n margin: 20px 0 10px\n}\n\n@media print {\n *, body, html,\n .ui.segment.pushable,\n .ui.divided.inverted.list .item.badge-card,\n .ui.inverted.list .item .header {\n background-color: #fff;\n color: #000;\n }\n .ui.item.menu {\n display: none;\n }\n .ui.container{\n width: 100%;\n }\n}\n\n\n// WEBPACK FOOTER //\n// ./src/pages/Main/Main.css"],"sourceRoot":""}
--------------------------------------------------------------------------------
/client/src/pages/Main/Main.js:
--------------------------------------------------------------------------------
1 | // * **Main** - contains the main-container div that holds the main layout and
2 | // navigation.
3 |
4 | import React, {Component} from "react"
5 | import {Sidebar, Segment, Menu, Icon} from 'semantic-ui-react'
6 | import {BrowserRouter as Router, Route, Switch, Link, NavLink} from 'react-router-dom'
7 | import Home from "../../pages/Home"
8 | import Attendees from "../../pages/Attendees"
9 | import BadgeGeneration from "../../pages/BadgeGeneration"
10 | import Workshops from "../../pages/Workshops"
11 | import WorkshopDetails from "../../pages/WorkshopDetails"
12 | import Registration from "../../pages/Registration"
13 | import CheckIn from "../../pages/CheckIn"
14 | import "./Main.css";
15 |
16 | class Main extends Component {
17 | state = {
18 | visible: false
19 | }
20 |
21 | toggleVisibility = () => this.setState({
22 | visible: !this.state.visible
23 | })
24 |
25 | render() {
26 | const {visible} = this.state
27 | return (
28 |
29 |
30 |
31 |
32 |
33 | Menu
34 |
35 |
36 | EventSnap
37 |
38 |
39 |
40 | Check-In
41 |
42 |
43 |
44 |
52 |
53 |
54 | Home
55 |
56 |
57 |
58 | Attendees
59 |
60 |
61 |
62 | Badges
63 |
64 |
65 |
66 | Workshops
67 |
68 |
69 |
70 | Registration
71 |
72 |
73 |
74 | Check-In
75 |
76 |
77 |
78 |
79 |
80 |
81 |
82 |
83 |
84 |
85 |
86 |
87 |
88 |
89 |
90 |
91 |
92 |
93 |
94 | )
95 | }
96 | }
97 |
98 | export default Main;
--------------------------------------------------------------------------------
/client/src/pages/CheckIn/CheckIn.js:
--------------------------------------------------------------------------------
1 | import React, {Component} from "react";
2 | import QrReader from "react-qr-reader";
3 | import API from "../../utils/API";
4 | import {setTimeout} from "timers";
5 | import {
6 | Container,
7 | Dropdown,
8 | Grid,
9 | Segment,
10 | Icon,
11 | Modal,
12 | Header
13 | } from 'semantic-ui-react'
14 | import '../Main/Main.css'
15 | import openSocket from 'socket.io-client';
16 |
17 | const socket = openSocket();
18 |
19 | class CheckIn extends Component {
20 |
21 | constructor(props) {
22 | super(props)
23 | this.state = {
24 | delay: 500,
25 | modalOpen: false,
26 | workshops: [],
27 | options: [],
28 | selectedWS: {},
29 | msg: '',
30 | iconName: '',
31 | iconColor: 'grey'
32 | }
33 | this.handleScan = this
34 | .handleScan
35 | .bind(this)
36 | }
37 |
38 | handleScan(data) {
39 | if (data) {
40 | // restarts scan after 3s
41 | setTimeout(function () {
42 | this.setState({delay: 500, modalOpen: false})
43 | }.bind(this), 3000)
44 |
45 | // handles check-in if Modal not open
46 | if (!this.modalOpen) {
47 | this.handleCheckIn(data, this.state.selectedWS.id)
48 | }
49 | }
50 | }
51 |
52 | handleError(err) {
53 | console.error(err)
54 | }
55 |
56 | handleCheckIn = (uuid, id) => {
57 | API
58 | .checkIn(uuid, id)
59 | .then(res => {
60 | if (res.data.success) {
61 | console.log(`${uuid} is checked in now to workshop ${id}`)
62 | console.log("checked in successfully", res.data)
63 | this.setState({checkedIn: true, msg: 'Success', iconName: 'checkmark', iconColor: 'green'})
64 | // sends workshopId to the server
65 | socket.emit('checkIn', id);
66 | } else {
67 | console.log(res.data.error);
68 | this.setState({msg: res.data.error, iconName: 'x', iconColor: 'red'})
69 | }
70 | // stops scanning and opens modal
71 | this.setState({delay: false, modalOpen: true})
72 |
73 | })
74 | .catch(err => console.log(err.respose));
75 | }
76 |
77 | componentDidMount() {
78 | this.loadWorkshops();
79 | }
80 |
81 | // componentWillUnmount() {
82 | // socket.disconnect();
83 | // }
84 |
85 | // loads workshop list under the dropdown when the check-in page is rendered
86 | loadWorkshops = () => {
87 | API
88 | .getWorkshops()
89 | .then(workshops => {
90 | this.setState({
91 | workshops: workshops.data,
92 | options: workshops.data.map(workshop => (
93 | {
94 | key: workshop.id,
95 | text: workshop.code + ": " + workshop.title,
96 | value: workshop.id
97 | }))
98 | })
99 | })
100 | .catch(err => console.log(err.respose))
101 | }
102 |
103 | // gets the selected workshop's id/value
104 | handleChange = (e, {value}) => {
105 | for (var i = 0; i < this.state.workshops.length; i++) {
106 | if (this.state.workshops[i].id === value) {
107 | this.setState({selectedWS: this.state.workshops[i]})
108 | }
109 | }
110 | }
111 |
112 | render() {
113 |
114 | return (
115 |
116 |
117 |
118 |
119 |
120 |
126 |
127 |
128 |
129 |
130 |
138 |
139 |
140 |
141 |
142 |
143 | {this.state.selectedWS.title}
144 |
145 |
146 |
147 |
148 |
149 |
150 |
151 | {this.state.msg}
152 |
153 |
154 |
155 |
156 | )
157 | }
158 | }
159 |
160 | export default CheckIn;
--------------------------------------------------------------------------------
/client/src/pages/Registration/Registration.js:
--------------------------------------------------------------------------------
1 | import React, {Component} from "react";
2 | import QrReader from "react-qr-reader";
3 | import API from "../../utils/API";
4 | import {setTimeout} from "timers";
5 | import {Container, Header, Grid, Modal, Button} from 'semantic-ui-react'
6 | import '../Main/Main.css'
7 |
8 | class Registration extends Component {
9 |
10 | constructor(props) {
11 | super(props)
12 | this.state = {
13 | delay: 500,
14 | modalOpen: false,
15 | msg: '',
16 | iconName: '',
17 | iconColor: 'grey'
18 | }
19 | this.handleScan = this
20 | .handleScan
21 | .bind(this)
22 | }
23 |
24 | handleScan(data) {
25 | if (data && !this.modalOpen) {
26 | this.handleRegistration(data)
27 | }
28 | }
29 |
30 | handleError(err) {
31 | console.error(err)
32 | }
33 |
34 | handleIAgreeBtn = () => {
35 | console.log("done")
36 | this.setState({modalOpen: false})
37 | }
38 |
39 | handleRegistration = (uuid) => {
40 | API
41 | .registration(uuid)
42 | .then(res => {
43 | if (res.data.success) {
44 | console.log(`${uuid} is registered`)
45 | this.setState({registered: true, msg: 'Success', iconName: 'checkmark', iconColor: 'green'})
46 | } else {
47 | console.log(res.data.error);
48 | this.setState({msg: res.data.error, iconName: 'x', iconColor: 'red'})
49 | }
50 | this.setState({modalOpen: true})
51 |
52 | })
53 | .catch(err => console.log(err.respose));
54 | }
55 |
56 | render() {
57 |
58 | return (
59 |
60 |
61 |
62 |
63 |
64 |
72 |
73 |
74 |
75 |
76 |
77 |
81 |
84 |
85 | Waive Right to Video or Audio Recordings
86 | I understand that my participation in the 2016 Chicago MINI Tango Festival may
87 | be recorded on video tape, film and / or photographs, and I expressly agree to
88 | and grant unlimited right and authority to use any recordings of my
89 | participation in the aforementioned event in any media, in perpetuity, in
90 | whatever manner and by whatever means, without obligation to me.Such recordings
91 | are the sole property of the person(s)and / or organization(s)making them.
92 |
93 | Waive Right to Damages or Injuries
94 | I understand the physical risks of participating in social dancing and assume
95 | full responsibility for any injury or personal damages resulting from my
96 | participation in any part of the 2016 Chicago MINI Tango Festival.I hereby, for
97 | myself and my heirs, executors and administrators, waive and release any and all
98 | rights for damages I might have against Chicago Milonguero, Ltd., sponsor of the
99 | 2016 Chicago MINI Tango Festival, its agents, for any and all injuries and / or
100 | damages which may be suffered by me in participation at the 2016 Chicago MINI
101 | Tango Festival and including traveling to and from the Chicago MINI Tango
102 |
103 | Waive Right to Refund
104 | I understand that any unsportsmanlike conduct, inappropriate and / or violent
105 | behavior or harassment of any member of the 2016 Chicago MINI Tango Festival
106 | staff or volunteers, any of the other participants or attendees, or any staff of
107 | the HILTON Rosemont on River Road will be cause for immediate ejection from the
108 | premises, without refund of any fees.
109 |
110 |
111 |
112 | Cancel
113 |
114 |
115 |
116 | I Agree
117 |
118 |
119 |
120 |
121 |
122 |
123 |
124 | )
125 | }
126 | }
127 |
128 | export default Registration;
--------------------------------------------------------------------------------
/client/src/pages/WorkshopDetails/WorkshopDetails.js:
--------------------------------------------------------------------------------
1 | import React, {Component} from 'react'
2 | import {
3 | Container,
4 | Grid,
5 | Icon,
6 | Header,
7 | List,
8 | Progress,
9 | Statistic
10 | } from 'semantic-ui-react'
11 | import API from "../../utils/API";
12 | import openSocket from 'socket.io-client';
13 |
14 | class WorkshopDetails extends Component {
15 |
16 | state = {
17 | workshopId: 0,
18 | workshopCode: "",
19 | workshopTitle: "",
20 | instuctorName: "",
21 | workshopDay: "",
22 | workshopFrame: "",
23 | workshopSkillLevel: "",
24 | workshopMaxSeat: 0,
25 | totalLead: 0,
26 | totalFollower: 0,
27 | listCheckLead: [],
28 | listCheckFollower: []
29 | }
30 |
31 | componentDidMount = () => {
32 | const socket = openSocket();
33 | const id = this.props.match.params.id;
34 | this.getOneWorkshop(id)
35 | const self = this;
36 | socket.on('checkedIn', function (id) {
37 | // alert('Someone Checked In into workshop: ' + id);
38 | self.getOneWorkshop(id)
39 | });
40 | }
41 |
42 | getOneWorkshop = (id) => {
43 | API
44 | .getOneWorkshop(id)
45 | .then(res => {
46 | console.log(res.data)
47 |
48 | const totalLead = res
49 | .data
50 | .result
51 | .filter(obj => obj.Attendee.dancerType === "L")
52 | .length
53 | const totalFollower = res
54 | .data
55 | .result
56 | .filter(obj => obj.Attendee.dancerType === "F")
57 | .length
58 |
59 | const listCheckLead = res
60 | .data
61 | .result
62 | .filter(obj => obj.Attendee.dancerType === "L" && obj.checkedIn)
63 | .map(obj => obj.Attendee)
64 |
65 | const listCheckFollower = res
66 | .data
67 | .result
68 | .filter(obj => obj.Attendee.dancerType === "F" && obj.checkedIn)
69 | .map(obj => obj.Attendee)
70 |
71 | this.setState({
72 | workshopId: res.data.workshop.id,
73 | workshopCode: res.data.workshop.code,
74 | workshopTitle: res.data.workshop.title,
75 | workshopDay: res.data.workshop.day,
76 | workshopTimeFrame: res.data.workshop.timeFrame,
77 | workshopSkillLevel: res.data.workshop.skillLevel,
78 | workshopMaxSeat: res.data.workshop.maxSeat,
79 | instuctorName: res.data.workshop.Instructor.coupleName,
80 | totalLead,
81 | totalFollower,
82 | listCheckLead,
83 | listCheckFollower
84 | })
85 | })
86 | .catch(err => console.log(err.respose));
87 | }
88 |
89 | render() {
90 |
91 | return (
92 |
93 |
94 |
95 | Workshop Real-Time Check-In Data
96 |
97 | < List.Item className='card'>
98 |
99 |
100 | {this.state.workshopCode}: {this.state.workshopTitle}
101 |
102 |
103 |
104 |
107 |
108 |
109 |
110 |
111 |
112 |
113 |
114 |
115 |
116 |
117 | {this.state.listCheckLead.length}
118 | Total Leads
119 |
120 |
121 | {this.state.listCheckFollower.length}
122 | Total Followers
123 |
124 |
125 |
126 |
127 | {this.state.listCheckLead.length + this.state.listCheckFollower.length}
128 |
129 | Check Ins
130 |
131 |
132 |
133 |
134 | {this.state.workshopMaxSeat}
135 |
136 | Capacity
137 |
138 |
139 |
140 |
141 |
142 |
143 |
149 |
150 | {this
151 | .state
152 | .listCheckLead
153 | .map(obj =>
154 | {obj.firstName + " " + obj.lastName}
155 | )}
156 |
157 |
158 |
159 |
160 |
166 |
167 | {this
168 | .state
169 | .listCheckFollower
170 | .map(obj =>
171 | {obj.firstName + " " + obj.lastName}
172 | )}
173 |
174 |
175 |
176 |
177 |
178 |
179 | )
180 | }
181 | }
182 |
183 | export default WorkshopDetails
--------------------------------------------------------------------------------
/yarn.lock:
--------------------------------------------------------------------------------
1 | # THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.
2 | # yarn lockfile v1
3 |
4 |
5 | "@types/geojson@^1.0.0":
6 | version "1.0.6"
7 | resolved "https://registry.yarnpkg.com/@types/geojson/-/geojson-1.0.6.tgz#3e02972728c69248c2af08d60a48cbb8680fffdf"
8 |
9 | "@types/node@*":
10 | version "8.0.53"
11 | resolved "https://registry.yarnpkg.com/@types/node/-/node-8.0.53.tgz#396b35af826fa66aad472c8cb7b8d5e277f4e6d8"
12 |
13 | abbrev@1:
14 | version "1.1.1"
15 | resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.1.tgz#f8f2c887ad10bf67f634f005b6987fed3179aac8"
16 |
17 | accepts@1.3.3:
18 | version "1.3.3"
19 | resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.3.tgz#c3ca7434938648c3e0d9c1e328dd68b622c284ca"
20 | dependencies:
21 | mime-types "~2.1.11"
22 | negotiator "0.6.1"
23 |
24 | accepts@~1.3.4:
25 | version "1.3.4"
26 | resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.4.tgz#86246758c7dd6d21a6474ff084a4740ec05eb21f"
27 | dependencies:
28 | mime-types "~2.1.16"
29 | negotiator "0.6.1"
30 |
31 | after@0.8.2:
32 | version "0.8.2"
33 | resolved "https://registry.yarnpkg.com/after/-/after-0.8.2.tgz#fedb394f9f0e02aa9768e702bda23b505fae7e1f"
34 |
35 | ajv@^4.9.1:
36 | version "4.11.8"
37 | resolved "https://registry.yarnpkg.com/ajv/-/ajv-4.11.8.tgz#82ffb02b29e662ae53bdc20af15947706739c536"
38 | dependencies:
39 | co "^4.6.0"
40 | json-stable-stringify "^1.0.1"
41 |
42 | ansi-align@^2.0.0:
43 | version "2.0.0"
44 | resolved "https://registry.yarnpkg.com/ansi-align/-/ansi-align-2.0.0.tgz#c36aeccba563b89ceb556f3690f0b1d9e3547f7f"
45 | dependencies:
46 | string-width "^2.0.0"
47 |
48 | ansi-regex@^0.2.0, ansi-regex@^0.2.1:
49 | version "0.2.1"
50 | resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-0.2.1.tgz#0d8e946967a3d8143f93e24e298525fc1b2235f9"
51 |
52 | ansi-regex@^2.0.0:
53 | version "2.1.1"
54 | resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df"
55 |
56 | ansi-regex@^3.0.0:
57 | version "3.0.0"
58 | resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-3.0.0.tgz#ed0317c322064f79466c02966bddb605ab37d998"
59 |
60 | ansi-styles@^1.1.0:
61 | version "1.1.0"
62 | resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-1.1.0.tgz#eaecbf66cd706882760b2f4691582b8f55d7a7de"
63 |
64 | ansi-styles@^3.1.0:
65 | version "3.2.0"
66 | resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.0.tgz#c159b8d5be0f9e5a6f346dab94f16ce022161b88"
67 | dependencies:
68 | color-convert "^1.9.0"
69 |
70 | ansicolors@~0.2.1:
71 | version "0.2.1"
72 | resolved "https://registry.yarnpkg.com/ansicolors/-/ansicolors-0.2.1.tgz#be089599097b74a5c9c4a84a0cdbcdb62bd87aef"
73 |
74 | anymatch@^1.3.0:
75 | version "1.3.2"
76 | resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-1.3.2.tgz#553dcb8f91e3c889845dfdba34c77721b90b9d7a"
77 | dependencies:
78 | micromatch "^2.1.5"
79 | normalize-path "^2.0.0"
80 |
81 | aproba@^1.0.3:
82 | version "1.2.0"
83 | resolved "https://registry.yarnpkg.com/aproba/-/aproba-1.2.0.tgz#6802e6264efd18c790a1b0d517f0f2627bf2c94a"
84 |
85 | are-we-there-yet@~1.1.2:
86 | version "1.1.4"
87 | resolved "https://registry.yarnpkg.com/are-we-there-yet/-/are-we-there-yet-1.1.4.tgz#bb5dca382bb94f05e15194373d16fd3ba1ca110d"
88 | dependencies:
89 | delegates "^1.0.0"
90 | readable-stream "^2.0.6"
91 |
92 | arr-diff@^2.0.0:
93 | version "2.0.0"
94 | resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-2.0.0.tgz#8f3b827f955a8bd669697e4a4256ac3ceae356cf"
95 | dependencies:
96 | arr-flatten "^1.0.1"
97 |
98 | arr-flatten@^1.0.1:
99 | version "1.1.0"
100 | resolved "https://registry.yarnpkg.com/arr-flatten/-/arr-flatten-1.1.0.tgz#36048bbff4e7b47e136644316c99669ea5ae91f1"
101 |
102 | array-flatten@1.1.1:
103 | version "1.1.1"
104 | resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-1.1.1.tgz#9a5f699051b1e7073328f2a008968b64ea2955d2"
105 |
106 | array-unique@^0.2.1:
107 | version "0.2.1"
108 | resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.2.1.tgz#a1d97ccafcbc2625cc70fadceb36a50c58b01a53"
109 |
110 | arraybuffer.slice@0.0.6:
111 | version "0.0.6"
112 | resolved "https://registry.yarnpkg.com/arraybuffer.slice/-/arraybuffer.slice-0.0.6.tgz#f33b2159f0532a3f3107a272c0ccfbd1ad2979ca"
113 |
114 | asn1@~0.2.3:
115 | version "0.2.3"
116 | resolved "https://registry.yarnpkg.com/asn1/-/asn1-0.2.3.tgz#dac8787713c9966849fc8180777ebe9c1ddf3b86"
117 |
118 | assert-plus@1.0.0, assert-plus@^1.0.0:
119 | version "1.0.0"
120 | resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-1.0.0.tgz#f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525"
121 |
122 | assert-plus@^0.2.0:
123 | version "0.2.0"
124 | resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-0.2.0.tgz#d74e1b87e7affc0db8aadb7021f3fe48101ab234"
125 |
126 | async-each@^1.0.0:
127 | version "1.0.1"
128 | resolved "https://registry.yarnpkg.com/async-each/-/async-each-1.0.1.tgz#19d386a1d9edc6e7c1c85d388aedbcc56d33602d"
129 |
130 | async-limiter@~1.0.0:
131 | version "1.0.0"
132 | resolved "https://registry.yarnpkg.com/async-limiter/-/async-limiter-1.0.0.tgz#78faed8c3d074ab81f22b4e985d79e8738f720f8"
133 |
134 | asynckit@^0.4.0:
135 | version "0.4.0"
136 | resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79"
137 |
138 | aws-sign2@~0.6.0:
139 | version "0.6.0"
140 | resolved "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.6.0.tgz#14342dd38dbcc94d0e5b87d763cd63612c0e794f"
141 |
142 | aws4@^1.2.1:
143 | version "1.6.0"
144 | resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.6.0.tgz#83ef5ca860b2b32e4a0deedee8c771b9db57471e"
145 |
146 | axios@^0.17.1:
147 | version "0.17.1"
148 | resolved "https://registry.yarnpkg.com/axios/-/axios-0.17.1.tgz#2d8e3e5d0bdbd7327f91bc814f5c57660f81824d"
149 | dependencies:
150 | follow-redirects "^1.2.5"
151 | is-buffer "^1.1.5"
152 |
153 | backo2@1.0.2:
154 | version "1.0.2"
155 | resolved "https://registry.yarnpkg.com/backo2/-/backo2-1.0.2.tgz#31ab1ac8b129363463e35b3ebb69f4dfcfba7947"
156 |
157 | balanced-match@^1.0.0:
158 | version "1.0.0"
159 | resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767"
160 |
161 | base64-arraybuffer@0.1.5:
162 | version "0.1.5"
163 | resolved "https://registry.yarnpkg.com/base64-arraybuffer/-/base64-arraybuffer-0.1.5.tgz#73926771923b5a19747ad666aa5cd4bf9c6e9ce8"
164 |
165 | base64id@1.0.0:
166 | version "1.0.0"
167 | resolved "https://registry.yarnpkg.com/base64id/-/base64id-1.0.0.tgz#47688cb99bb6804f0e06d3e763b1c32e57d8e6b6"
168 |
169 | bcrypt-pbkdf@^1.0.0:
170 | version "1.0.1"
171 | resolved "https://registry.yarnpkg.com/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.1.tgz#63bc5dcb61331b92bc05fd528953c33462a06f8d"
172 | dependencies:
173 | tweetnacl "^0.14.3"
174 |
175 | better-assert@~1.0.0:
176 | version "1.0.2"
177 | resolved "https://registry.yarnpkg.com/better-assert/-/better-assert-1.0.2.tgz#40866b9e1b9e0b55b481894311e68faffaebc522"
178 | dependencies:
179 | callsite "1.0.0"
180 |
181 | binary-extensions@^1.0.0:
182 | version "1.11.0"
183 | resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-1.11.0.tgz#46aa1751fb6a2f93ee5e689bb1087d4b14c6c205"
184 |
185 | blob@0.0.4:
186 | version "0.0.4"
187 | resolved "https://registry.yarnpkg.com/blob/-/blob-0.0.4.tgz#bcf13052ca54463f30f9fc7e95b9a47630a94921"
188 |
189 | block-stream@*:
190 | version "0.0.9"
191 | resolved "https://registry.yarnpkg.com/block-stream/-/block-stream-0.0.9.tgz#13ebfe778a03205cfe03751481ebb4b3300c126a"
192 | dependencies:
193 | inherits "~2.0.0"
194 |
195 | bluebird@^3.4.6:
196 | version "3.5.1"
197 | resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.5.1.tgz#d9551f9de98f1fcda1e683d17ee91a0602ee2eb9"
198 |
199 | body-parser@1.18.2:
200 | version "1.18.2"
201 | resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.18.2.tgz#87678a19d84b47d859b83199bd59bce222b10454"
202 | dependencies:
203 | bytes "3.0.0"
204 | content-type "~1.0.4"
205 | debug "2.6.9"
206 | depd "~1.1.1"
207 | http-errors "~1.6.2"
208 | iconv-lite "0.4.19"
209 | on-finished "~2.3.0"
210 | qs "6.5.1"
211 | raw-body "2.3.2"
212 | type-is "~1.6.15"
213 |
214 | boom@2.x.x:
215 | version "2.10.1"
216 | resolved "https://registry.yarnpkg.com/boom/-/boom-2.10.1.tgz#39c8918ceff5799f83f9492a848f625add0c766f"
217 | dependencies:
218 | hoek "2.x.x"
219 |
220 | boxen@^1.2.1:
221 | version "1.3.0"
222 | resolved "https://registry.yarnpkg.com/boxen/-/boxen-1.3.0.tgz#55c6c39a8ba58d9c61ad22cd877532deb665a20b"
223 | dependencies:
224 | ansi-align "^2.0.0"
225 | camelcase "^4.0.0"
226 | chalk "^2.0.1"
227 | cli-boxes "^1.0.0"
228 | string-width "^2.0.0"
229 | term-size "^1.2.0"
230 | widest-line "^2.0.0"
231 |
232 | brace-expansion@^1.1.7:
233 | version "1.1.8"
234 | resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.8.tgz#c07b211c7c952ec1f8efd51a77ef0d1d3990a292"
235 | dependencies:
236 | balanced-match "^1.0.0"
237 | concat-map "0.0.1"
238 |
239 | braces@^1.8.2:
240 | version "1.8.5"
241 | resolved "https://registry.yarnpkg.com/braces/-/braces-1.8.5.tgz#ba77962e12dff969d6b76711e914b737857bf6a7"
242 | dependencies:
243 | expand-range "^1.8.1"
244 | preserve "^0.2.0"
245 | repeat-element "^1.1.2"
246 |
247 | bytes@3.0.0:
248 | version "3.0.0"
249 | resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.0.0.tgz#d32815404d689699f85a4ea4fa8755dd13a96048"
250 |
251 | callsite@1.0.0:
252 | version "1.0.0"
253 | resolved "https://registry.yarnpkg.com/callsite/-/callsite-1.0.0.tgz#280398e5d664bd74038b6f0905153e6e8af1bc20"
254 |
255 | camelcase@^4.0.0:
256 | version "4.1.0"
257 | resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-4.1.0.tgz#d545635be1e33c542649c69173e5de6acfae34dd"
258 |
259 | capture-stack-trace@^1.0.0:
260 | version "1.0.0"
261 | resolved "https://registry.yarnpkg.com/capture-stack-trace/-/capture-stack-trace-1.0.0.tgz#4a6fa07399c26bba47f0b2496b4d0fb408c5550d"
262 |
263 | cardinal@1.0.0:
264 | version "1.0.0"
265 | resolved "https://registry.yarnpkg.com/cardinal/-/cardinal-1.0.0.tgz#50e21c1b0aa37729f9377def196b5a9cec932ee9"
266 | dependencies:
267 | ansicolors "~0.2.1"
268 | redeyed "~1.0.0"
269 |
270 | caseless@~0.12.0:
271 | version "0.12.0"
272 | resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc"
273 |
274 | chalk@0.5.1:
275 | version "0.5.1"
276 | resolved "https://registry.yarnpkg.com/chalk/-/chalk-0.5.1.tgz#663b3a648b68b55d04690d49167aa837858f2174"
277 | dependencies:
278 | ansi-styles "^1.1.0"
279 | escape-string-regexp "^1.0.0"
280 | has-ansi "^0.1.0"
281 | strip-ansi "^0.3.0"
282 | supports-color "^0.2.0"
283 |
284 | chalk@^2.0.1:
285 | version "2.3.0"
286 | resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.3.0.tgz#b5ea48efc9c1793dccc9b4767c93914d3f2d52ba"
287 | dependencies:
288 | ansi-styles "^3.1.0"
289 | escape-string-regexp "^1.0.5"
290 | supports-color "^4.0.0"
291 |
292 | chokidar@^1.7.0:
293 | version "1.7.0"
294 | resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-1.7.0.tgz#798e689778151c8076b4b360e5edd28cda2bb468"
295 | dependencies:
296 | anymatch "^1.3.0"
297 | async-each "^1.0.0"
298 | glob-parent "^2.0.0"
299 | inherits "^2.0.1"
300 | is-binary-path "^1.0.0"
301 | is-glob "^2.0.0"
302 | path-is-absolute "^1.0.0"
303 | readdirp "^2.0.0"
304 | optionalDependencies:
305 | fsevents "^1.0.0"
306 |
307 | cli-boxes@^1.0.0:
308 | version "1.0.0"
309 | resolved "https://registry.yarnpkg.com/cli-boxes/-/cli-boxes-1.0.0.tgz#4fa917c3e59c94a004cd61f8ee509da651687143"
310 |
311 | cls-bluebird@^2.0.1:
312 | version "2.0.1"
313 | resolved "https://registry.yarnpkg.com/cls-bluebird/-/cls-bluebird-2.0.1.tgz#c259a480ae02c0e506134307bb13db30446ee2e7"
314 | dependencies:
315 | is-bluebird "^1.0.2"
316 | shimmer "^1.1.0"
317 |
318 | co@^4.6.0:
319 | version "4.6.0"
320 | resolved "https://registry.yarnpkg.com/co/-/co-4.6.0.tgz#6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184"
321 |
322 | code-point-at@^1.0.0:
323 | version "1.1.0"
324 | resolved "https://registry.yarnpkg.com/code-point-at/-/code-point-at-1.1.0.tgz#0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77"
325 |
326 | color-convert@^1.9.0:
327 | version "1.9.1"
328 | resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.1.tgz#c1261107aeb2f294ebffec9ed9ecad529a6097ed"
329 | dependencies:
330 | color-name "^1.1.1"
331 |
332 | color-name@^1.1.1:
333 | version "1.1.3"
334 | resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25"
335 |
336 | combined-stream@^1.0.5, combined-stream@~1.0.5:
337 | version "1.0.5"
338 | resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.5.tgz#938370a57b4a51dea2c77c15d5c5fdf895164009"
339 | dependencies:
340 | delayed-stream "~1.0.0"
341 |
342 | commander@2.6.0:
343 | version "2.6.0"
344 | resolved "https://registry.yarnpkg.com/commander/-/commander-2.6.0.tgz#9df7e52fb2a0cb0fb89058ee80c3104225f37e1d"
345 |
346 | component-bind@1.0.0:
347 | version "1.0.0"
348 | resolved "https://registry.yarnpkg.com/component-bind/-/component-bind-1.0.0.tgz#00c608ab7dcd93897c0009651b1d3a8e1e73bbd1"
349 |
350 | component-emitter@1.2.1:
351 | version "1.2.1"
352 | resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.2.1.tgz#137918d6d78283f7df7a6b7c5a63e140e69425e6"
353 |
354 | component-inherit@0.0.3:
355 | version "0.0.3"
356 | resolved "https://registry.yarnpkg.com/component-inherit/-/component-inherit-0.0.3.tgz#645fc4adf58b72b649d5cae65135619db26ff143"
357 |
358 | concat-map@0.0.1:
359 | version "0.0.1"
360 | resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b"
361 |
362 | concurrently@^3.5.0:
363 | version "3.5.1"
364 | resolved "https://registry.yarnpkg.com/concurrently/-/concurrently-3.5.1.tgz#ee8b60018bbe86b02df13e5249453c6ececd2521"
365 | dependencies:
366 | chalk "0.5.1"
367 | commander "2.6.0"
368 | date-fns "^1.23.0"
369 | lodash "^4.5.1"
370 | rx "2.3.24"
371 | spawn-command "^0.0.2-1"
372 | supports-color "^3.2.3"
373 | tree-kill "^1.1.0"
374 |
375 | configstore@^3.0.0:
376 | version "3.1.1"
377 | resolved "https://registry.yarnpkg.com/configstore/-/configstore-3.1.1.tgz#094ee662ab83fad9917678de114faaea8fcdca90"
378 | dependencies:
379 | dot-prop "^4.1.0"
380 | graceful-fs "^4.1.2"
381 | make-dir "^1.0.0"
382 | unique-string "^1.0.0"
383 | write-file-atomic "^2.0.0"
384 | xdg-basedir "^3.0.0"
385 |
386 | console-control-strings@^1.0.0, console-control-strings@~1.1.0:
387 | version "1.1.0"
388 | resolved "https://registry.yarnpkg.com/console-control-strings/-/console-control-strings-1.1.0.tgz#3d7cf4464db6446ea644bf4b39507f9851008e8e"
389 |
390 | content-disposition@0.5.2:
391 | version "0.5.2"
392 | resolved "https://registry.yarnpkg.com/content-disposition/-/content-disposition-0.5.2.tgz#0cf68bb9ddf5f2be7961c3a85178cb85dba78cb4"
393 |
394 | content-type@~1.0.4:
395 | version "1.0.4"
396 | resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.4.tgz#e138cc75e040c727b1966fe5e5f8c9aee256fe3b"
397 |
398 | cookie-signature@1.0.6:
399 | version "1.0.6"
400 | resolved "https://registry.yarnpkg.com/cookie-signature/-/cookie-signature-1.0.6.tgz#e303a882b342cc3ee8ca513a79999734dab3ae2c"
401 |
402 | cookie@0.3.1:
403 | version "0.3.1"
404 | resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.3.1.tgz#e7e0a1f9ef43b4c8ba925c5c5a96e806d16873bb"
405 |
406 | core-util-is@1.0.2, core-util-is@~1.0.0:
407 | version "1.0.2"
408 | resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7"
409 |
410 | create-error-class@^3.0.0:
411 | version "3.0.2"
412 | resolved "https://registry.yarnpkg.com/create-error-class/-/create-error-class-3.0.2.tgz#06be7abef947a3f14a30fd610671d401bca8b7b6"
413 | dependencies:
414 | capture-stack-trace "^1.0.0"
415 |
416 | cross-spawn@^5.0.1:
417 | version "5.1.0"
418 | resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-5.1.0.tgz#e8bd0efee58fcff6f8f94510a0a554bbfa235449"
419 | dependencies:
420 | lru-cache "^4.0.1"
421 | shebang-command "^1.2.0"
422 | which "^1.2.9"
423 |
424 | cryptiles@2.x.x:
425 | version "2.0.5"
426 | resolved "https://registry.yarnpkg.com/cryptiles/-/cryptiles-2.0.5.tgz#3bdfecdc608147c1c67202fa291e7dca59eaa3b8"
427 | dependencies:
428 | boom "2.x.x"
429 |
430 | crypto-random-string@^1.0.0:
431 | version "1.0.0"
432 | resolved "https://registry.yarnpkg.com/crypto-random-string/-/crypto-random-string-1.0.0.tgz#a230f64f568310e1498009940790ec99545bca7e"
433 |
434 | dashdash@^1.12.0:
435 | version "1.14.1"
436 | resolved "https://registry.yarnpkg.com/dashdash/-/dashdash-1.14.1.tgz#853cfa0f7cbe2fed5de20326b8dd581035f6e2f0"
437 | dependencies:
438 | assert-plus "^1.0.0"
439 |
440 | date-fns@^1.23.0:
441 | version "1.29.0"
442 | resolved "https://registry.yarnpkg.com/date-fns/-/date-fns-1.29.0.tgz#12e609cdcb935127311d04d33334e2960a2a54e6"
443 |
444 | debug@2.6.9, debug@^2.2.0, debug@^2.6.8, debug@^2.6.9, debug@~2.6.4, debug@~2.6.6, debug@~2.6.9:
445 | version "2.6.9"
446 | resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f"
447 | dependencies:
448 | ms "2.0.0"
449 |
450 | debug@^3.0.0, debug@^3.1.0:
451 | version "3.1.0"
452 | resolved "https://registry.yarnpkg.com/debug/-/debug-3.1.0.tgz#5bb5a0672628b64149566ba16819e61518c67261"
453 | dependencies:
454 | ms "2.0.0"
455 |
456 | deep-extend@~0.4.0:
457 | version "0.4.2"
458 | resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.4.2.tgz#48b699c27e334bf89f10892be432f6e4c7d34a7f"
459 |
460 | delayed-stream@~1.0.0:
461 | version "1.0.0"
462 | resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619"
463 |
464 | delegates@^1.0.0:
465 | version "1.0.0"
466 | resolved "https://registry.yarnpkg.com/delegates/-/delegates-1.0.0.tgz#84c6e159b81904fdca59a0ef44cd870d31250f9a"
467 |
468 | denque@^1.1.1:
469 | version "1.2.2"
470 | resolved "https://registry.yarnpkg.com/denque/-/denque-1.2.2.tgz#e06cf7cf0da8badc88cbdaabf8fc0a70d659f1d4"
471 |
472 | depd@1.1.1, depd@^1.1.0, depd@~1.1.1:
473 | version "1.1.1"
474 | resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.1.tgz#5783b4e1c459f06fa5ca27f991f3d06e7a310359"
475 |
476 | destroy@~1.0.4:
477 | version "1.0.4"
478 | resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.0.4.tgz#978857442c44749e4206613e37946205826abd80"
479 |
480 | detect-libc@^1.0.2:
481 | version "1.0.3"
482 | resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-1.0.3.tgz#fa137c4bd698edf55cd5cd02ac559f91a4c4ba9b"
483 |
484 | dot-prop@^4.1.0:
485 | version "4.2.0"
486 | resolved "https://registry.yarnpkg.com/dot-prop/-/dot-prop-4.2.0.tgz#1f19e0c2e1aa0e32797c49799f2837ac6af69c57"
487 | dependencies:
488 | is-obj "^1.0.0"
489 |
490 | dottie@^2.0.0:
491 | version "2.0.0"
492 | resolved "https://registry.yarnpkg.com/dottie/-/dottie-2.0.0.tgz#da191981c8b8d713ca0115d5898cf397c2f0ddd0"
493 |
494 | duplexer3@^0.1.4:
495 | version "0.1.4"
496 | resolved "https://registry.yarnpkg.com/duplexer3/-/duplexer3-0.1.4.tgz#ee01dd1cac0ed3cbc7fdbea37dc0a8f1ce002ce2"
497 |
498 | duplexer@~0.1.1:
499 | version "0.1.1"
500 | resolved "https://registry.yarnpkg.com/duplexer/-/duplexer-0.1.1.tgz#ace6ff808c1ce66b57d1ebf97977acb02334cfc1"
501 |
502 | ecc-jsbn@~0.1.1:
503 | version "0.1.1"
504 | resolved "https://registry.yarnpkg.com/ecc-jsbn/-/ecc-jsbn-0.1.1.tgz#0fc73a9ed5f0d53c38193398523ef7e543777505"
505 | dependencies:
506 | jsbn "~0.1.0"
507 |
508 | ee-first@1.1.1:
509 | version "1.1.1"
510 | resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d"
511 |
512 | encodeurl@~1.0.1:
513 | version "1.0.1"
514 | resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.1.tgz#79e3d58655346909fe6f0f45a5de68103b294d20"
515 |
516 | engine.io-client@~3.1.0:
517 | version "3.1.4"
518 | resolved "https://registry.yarnpkg.com/engine.io-client/-/engine.io-client-3.1.4.tgz#4fcf1370b47163bd2ce9be2733972430350d4ea1"
519 | dependencies:
520 | component-emitter "1.2.1"
521 | component-inherit "0.0.3"
522 | debug "~2.6.9"
523 | engine.io-parser "~2.1.1"
524 | has-cors "1.1.0"
525 | indexof "0.0.1"
526 | parseqs "0.0.5"
527 | parseuri "0.0.5"
528 | ws "~3.3.1"
529 | xmlhttprequest-ssl "~1.5.4"
530 | yeast "0.1.2"
531 |
532 | engine.io-parser@~2.1.0, engine.io-parser@~2.1.1:
533 | version "2.1.1"
534 | resolved "https://registry.yarnpkg.com/engine.io-parser/-/engine.io-parser-2.1.1.tgz#e0fb3f0e0462f7f58bb77c1a52e9f5a7e26e4668"
535 | dependencies:
536 | after "0.8.2"
537 | arraybuffer.slice "0.0.6"
538 | base64-arraybuffer "0.1.5"
539 | blob "0.0.4"
540 | has-binary2 "~1.0.2"
541 |
542 | engine.io@~3.1.0:
543 | version "3.1.4"
544 | resolved "https://registry.yarnpkg.com/engine.io/-/engine.io-3.1.4.tgz#3d0211b70a552ce841ffc7da8627b301a9a4162e"
545 | dependencies:
546 | accepts "1.3.3"
547 | base64id "1.0.0"
548 | cookie "0.3.1"
549 | debug "~2.6.9"
550 | engine.io-parser "~2.1.0"
551 | ws "~3.3.1"
552 | optionalDependencies:
553 | uws "~0.14.4"
554 |
555 | es6-promise@^3.3.1:
556 | version "3.3.1"
557 | resolved "https://registry.yarnpkg.com/es6-promise/-/es6-promise-3.3.1.tgz#a08cdde84ccdbf34d027a1451bc91d4bcd28a613"
558 |
559 | escape-html@~1.0.3:
560 | version "1.0.3"
561 | resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988"
562 |
563 | escape-string-regexp@^1.0.0, escape-string-regexp@^1.0.5:
564 | version "1.0.5"
565 | resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4"
566 |
567 | esprima@~3.0.0:
568 | version "3.0.0"
569 | resolved "https://registry.yarnpkg.com/esprima/-/esprima-3.0.0.tgz#53cf247acda77313e551c3aa2e73342d3fb4f7d9"
570 |
571 | etag@~1.8.1:
572 | version "1.8.1"
573 | resolved "https://registry.yarnpkg.com/etag/-/etag-1.8.1.tgz#41ae2eeb65efa62268aebfea83ac7d79299b0887"
574 |
575 | event-stream@~3.3.0:
576 | version "3.3.4"
577 | resolved "https://registry.yarnpkg.com/event-stream/-/event-stream-3.3.4.tgz#4ab4c9a0f5a54db9338b4c34d86bfce8f4b35571"
578 | dependencies:
579 | duplexer "~0.1.1"
580 | from "~0"
581 | map-stream "~0.1.0"
582 | pause-stream "0.0.11"
583 | split "0.3"
584 | stream-combiner "~0.0.4"
585 | through "~2.3.1"
586 |
587 | execa@^0.7.0:
588 | version "0.7.0"
589 | resolved "https://registry.yarnpkg.com/execa/-/execa-0.7.0.tgz#944becd34cc41ee32a63a9faf27ad5a65fc59777"
590 | dependencies:
591 | cross-spawn "^5.0.1"
592 | get-stream "^3.0.0"
593 | is-stream "^1.1.0"
594 | npm-run-path "^2.0.0"
595 | p-finally "^1.0.0"
596 | signal-exit "^3.0.0"
597 | strip-eof "^1.0.0"
598 |
599 | expand-brackets@^0.1.4:
600 | version "0.1.5"
601 | resolved "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-0.1.5.tgz#df07284e342a807cd733ac5af72411e581d1177b"
602 | dependencies:
603 | is-posix-bracket "^0.1.0"
604 |
605 | expand-range@^1.8.1:
606 | version "1.8.2"
607 | resolved "https://registry.yarnpkg.com/expand-range/-/expand-range-1.8.2.tgz#a299effd335fe2721ebae8e257ec79644fc85337"
608 | dependencies:
609 | fill-range "^2.1.0"
610 |
611 | express@^4.15.4:
612 | version "4.16.2"
613 | resolved "https://registry.yarnpkg.com/express/-/express-4.16.2.tgz#e35c6dfe2d64b7dca0a5cd4f21781be3299e076c"
614 | dependencies:
615 | accepts "~1.3.4"
616 | array-flatten "1.1.1"
617 | body-parser "1.18.2"
618 | content-disposition "0.5.2"
619 | content-type "~1.0.4"
620 | cookie "0.3.1"
621 | cookie-signature "1.0.6"
622 | debug "2.6.9"
623 | depd "~1.1.1"
624 | encodeurl "~1.0.1"
625 | escape-html "~1.0.3"
626 | etag "~1.8.1"
627 | finalhandler "1.1.0"
628 | fresh "0.5.2"
629 | merge-descriptors "1.0.1"
630 | methods "~1.1.2"
631 | on-finished "~2.3.0"
632 | parseurl "~1.3.2"
633 | path-to-regexp "0.1.7"
634 | proxy-addr "~2.0.2"
635 | qs "6.5.1"
636 | range-parser "~1.2.0"
637 | safe-buffer "5.1.1"
638 | send "0.16.1"
639 | serve-static "1.13.1"
640 | setprototypeof "1.1.0"
641 | statuses "~1.3.1"
642 | type-is "~1.6.15"
643 | utils-merge "1.0.1"
644 | vary "~1.1.2"
645 |
646 | extend@~3.0.0:
647 | version "3.0.1"
648 | resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.1.tgz#a755ea7bc1adfcc5a31ce7e762dbaadc5e636444"
649 |
650 | extglob@^0.3.1:
651 | version "0.3.2"
652 | resolved "https://registry.yarnpkg.com/extglob/-/extglob-0.3.2.tgz#2e18ff3d2f49ab2765cec9023f011daa8d8349a1"
653 | dependencies:
654 | is-extglob "^1.0.0"
655 |
656 | extsprintf@1.3.0:
657 | version "1.3.0"
658 | resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.3.0.tgz#96918440e3041a7a414f8c52e3c574eb3c3e1e05"
659 |
660 | extsprintf@^1.2.0:
661 | version "1.4.0"
662 | resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.4.0.tgz#e2689f8f356fad62cca65a3a91c5df5f9551692f"
663 |
664 | filename-regex@^2.0.0:
665 | version "2.0.1"
666 | resolved "https://registry.yarnpkg.com/filename-regex/-/filename-regex-2.0.1.tgz#c1c4b9bee3e09725ddb106b75c1e301fe2f18b26"
667 |
668 | fill-range@^2.1.0:
669 | version "2.2.3"
670 | resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-2.2.3.tgz#50b77dfd7e469bc7492470963699fe7a8485a723"
671 | dependencies:
672 | is-number "^2.1.0"
673 | isobject "^2.0.0"
674 | randomatic "^1.1.3"
675 | repeat-element "^1.1.2"
676 | repeat-string "^1.5.2"
677 |
678 | finalhandler@1.1.0:
679 | version "1.1.0"
680 | resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.1.0.tgz#ce0b6855b45853e791b2fcc680046d88253dd7f5"
681 | dependencies:
682 | debug "2.6.9"
683 | encodeurl "~1.0.1"
684 | escape-html "~1.0.3"
685 | on-finished "~2.3.0"
686 | parseurl "~1.3.2"
687 | statuses "~1.3.1"
688 | unpipe "~1.0.0"
689 |
690 | follow-redirects@^1.2.5:
691 | version "1.2.6"
692 | resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.2.6.tgz#4dcdc7e4ab3dd6765a97ff89c3b4c258117c79bf"
693 | dependencies:
694 | debug "^3.1.0"
695 |
696 | for-in@^1.0.1:
697 | version "1.0.2"
698 | resolved "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80"
699 |
700 | for-own@^0.1.4:
701 | version "0.1.5"
702 | resolved "https://registry.yarnpkg.com/for-own/-/for-own-0.1.5.tgz#5265c681a4f294dabbf17c9509b6763aa84510ce"
703 | dependencies:
704 | for-in "^1.0.1"
705 |
706 | forever-agent@~0.6.1:
707 | version "0.6.1"
708 | resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91"
709 |
710 | form-data@~2.1.1:
711 | version "2.1.4"
712 | resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.1.4.tgz#33c183acf193276ecaa98143a69e94bfee1750d1"
713 | dependencies:
714 | asynckit "^0.4.0"
715 | combined-stream "^1.0.5"
716 | mime-types "^2.1.12"
717 |
718 | forwarded@~0.1.2:
719 | version "0.1.2"
720 | resolved "https://registry.yarnpkg.com/forwarded/-/forwarded-0.1.2.tgz#98c23dab1175657b8c0573e8ceccd91b0ff18c84"
721 |
722 | fresh@0.5.2:
723 | version "0.5.2"
724 | resolved "https://registry.yarnpkg.com/fresh/-/fresh-0.5.2.tgz#3d8cadd90d976569fa835ab1f8e4b23a105605a7"
725 |
726 | from@~0:
727 | version "0.1.7"
728 | resolved "https://registry.yarnpkg.com/from/-/from-0.1.7.tgz#83c60afc58b9c56997007ed1a768b3ab303a44fe"
729 |
730 | fs.realpath@^1.0.0:
731 | version "1.0.0"
732 | resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f"
733 |
734 | fsevents@^1.0.0:
735 | version "1.1.3"
736 | resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-1.1.3.tgz#11f82318f5fe7bb2cd22965a108e9306208216d8"
737 | dependencies:
738 | nan "^2.3.0"
739 | node-pre-gyp "^0.6.39"
740 |
741 | fstream-ignore@^1.0.5:
742 | version "1.0.5"
743 | resolved "https://registry.yarnpkg.com/fstream-ignore/-/fstream-ignore-1.0.5.tgz#9c31dae34767018fe1d249b24dada67d092da105"
744 | dependencies:
745 | fstream "^1.0.0"
746 | inherits "2"
747 | minimatch "^3.0.0"
748 |
749 | fstream@^1.0.0, fstream@^1.0.10, fstream@^1.0.2:
750 | version "1.0.11"
751 | resolved "https://registry.yarnpkg.com/fstream/-/fstream-1.0.11.tgz#5c1fb1f117477114f0632a0eb4b71b3cb0fd3171"
752 | dependencies:
753 | graceful-fs "^4.1.2"
754 | inherits "~2.0.0"
755 | mkdirp ">=0.5 0"
756 | rimraf "2"
757 |
758 | gauge@~2.7.3:
759 | version "2.7.4"
760 | resolved "https://registry.yarnpkg.com/gauge/-/gauge-2.7.4.tgz#2c03405c7538c39d7eb37b317022e325fb018bf7"
761 | dependencies:
762 | aproba "^1.0.3"
763 | console-control-strings "^1.0.0"
764 | has-unicode "^2.0.0"
765 | object-assign "^4.1.0"
766 | signal-exit "^3.0.0"
767 | string-width "^1.0.1"
768 | strip-ansi "^3.0.1"
769 | wide-align "^1.1.0"
770 |
771 | generate-function@^2.0.0:
772 | version "2.0.0"
773 | resolved "https://registry.yarnpkg.com/generate-function/-/generate-function-2.0.0.tgz#6858fe7c0969b7d4e9093337647ac79f60dfbe74"
774 |
775 | generic-pool@^3.1.8:
776 | version "3.2.0"
777 | resolved "https://registry.yarnpkg.com/generic-pool/-/generic-pool-3.2.0.tgz#c1d485ecbd6f18c0513d4741d098a6715eaeeca8"
778 |
779 | get-stream@^3.0.0:
780 | version "3.0.0"
781 | resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-3.0.0.tgz#8e943d1358dc37555054ecbe2edb05aa174ede14"
782 |
783 | getpass@^0.1.1:
784 | version "0.1.7"
785 | resolved "https://registry.yarnpkg.com/getpass/-/getpass-0.1.7.tgz#5eff8e3e684d569ae4cb2b1282604e8ba62149fa"
786 | dependencies:
787 | assert-plus "^1.0.0"
788 |
789 | glob-base@^0.3.0:
790 | version "0.3.0"
791 | resolved "https://registry.yarnpkg.com/glob-base/-/glob-base-0.3.0.tgz#dbb164f6221b1c0b1ccf82aea328b497df0ea3c4"
792 | dependencies:
793 | glob-parent "^2.0.0"
794 | is-glob "^2.0.0"
795 |
796 | glob-parent@^2.0.0:
797 | version "2.0.0"
798 | resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-2.0.0.tgz#81383d72db054fcccf5336daa902f182f6edbb28"
799 | dependencies:
800 | is-glob "^2.0.0"
801 |
802 | glob@^7.0.5:
803 | version "7.1.2"
804 | resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.2.tgz#c19c9df9a028702d678612384a6552404c636d15"
805 | dependencies:
806 | fs.realpath "^1.0.0"
807 | inflight "^1.0.4"
808 | inherits "2"
809 | minimatch "^3.0.4"
810 | once "^1.3.0"
811 | path-is-absolute "^1.0.0"
812 |
813 | global-dirs@^0.1.0:
814 | version "0.1.1"
815 | resolved "https://registry.yarnpkg.com/global-dirs/-/global-dirs-0.1.1.tgz#b319c0dd4607f353f3be9cca4c72fc148c49f445"
816 | dependencies:
817 | ini "^1.3.4"
818 |
819 | got@^6.7.1:
820 | version "6.7.1"
821 | resolved "https://registry.yarnpkg.com/got/-/got-6.7.1.tgz#240cd05785a9a18e561dc1b44b41c763ef1e8db0"
822 | dependencies:
823 | create-error-class "^3.0.0"
824 | duplexer3 "^0.1.4"
825 | get-stream "^3.0.0"
826 | is-redirect "^1.0.0"
827 | is-retry-allowed "^1.0.0"
828 | is-stream "^1.0.0"
829 | lowercase-keys "^1.0.0"
830 | safe-buffer "^5.0.1"
831 | timed-out "^4.0.0"
832 | unzip-response "^2.0.1"
833 | url-parse-lax "^1.0.0"
834 |
835 | graceful-fs@^4.1.11, graceful-fs@^4.1.2:
836 | version "4.1.11"
837 | resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.1.11.tgz#0e8bdfe4d1ddb8854d64e04ea7c00e2a026e5658"
838 |
839 | har-schema@^1.0.5:
840 | version "1.0.5"
841 | resolved "https://registry.yarnpkg.com/har-schema/-/har-schema-1.0.5.tgz#d263135f43307c02c602afc8fe95970c0151369e"
842 |
843 | har-validator@~4.2.1:
844 | version "4.2.1"
845 | resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-4.2.1.tgz#33481d0f1bbff600dd203d75812a6a5fba002e2a"
846 | dependencies:
847 | ajv "^4.9.1"
848 | har-schema "^1.0.5"
849 |
850 | has-ansi@^0.1.0:
851 | version "0.1.0"
852 | resolved "https://registry.yarnpkg.com/has-ansi/-/has-ansi-0.1.0.tgz#84f265aae8c0e6a88a12d7022894b7568894c62e"
853 | dependencies:
854 | ansi-regex "^0.2.0"
855 |
856 | has-binary2@~1.0.2:
857 | version "1.0.2"
858 | resolved "https://registry.yarnpkg.com/has-binary2/-/has-binary2-1.0.2.tgz#e83dba49f0b9be4d026d27365350d9f03f54be98"
859 | dependencies:
860 | isarray "2.0.1"
861 |
862 | has-cors@1.1.0:
863 | version "1.1.0"
864 | resolved "https://registry.yarnpkg.com/has-cors/-/has-cors-1.1.0.tgz#5e474793f7ea9843d1bb99c23eef49ff126fff39"
865 |
866 | has-flag@^1.0.0:
867 | version "1.0.0"
868 | resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-1.0.0.tgz#9d9e793165ce017a00f00418c43f942a7b1d11fa"
869 |
870 | has-flag@^2.0.0:
871 | version "2.0.0"
872 | resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-2.0.0.tgz#e8207af1cc7b30d446cc70b734b5e8be18f88d51"
873 |
874 | has-unicode@^2.0.0:
875 | version "2.0.1"
876 | resolved "https://registry.yarnpkg.com/has-unicode/-/has-unicode-2.0.1.tgz#e0e6fe6a28cf51138855e086d1691e771de2a8b9"
877 |
878 | hawk@3.1.3, hawk@~3.1.3:
879 | version "3.1.3"
880 | resolved "https://registry.yarnpkg.com/hawk/-/hawk-3.1.3.tgz#078444bd7c1640b0fe540d2c9b73d59678e8e1c4"
881 | dependencies:
882 | boom "2.x.x"
883 | cryptiles "2.x.x"
884 | hoek "2.x.x"
885 | sntp "1.x.x"
886 |
887 | hoek@2.x.x:
888 | version "2.16.3"
889 | resolved "https://registry.yarnpkg.com/hoek/-/hoek-2.16.3.tgz#20bb7403d3cea398e91dc4710a8ff1b8274a25ed"
890 |
891 | http-errors@1.6.2, http-errors@~1.6.2:
892 | version "1.6.2"
893 | resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.6.2.tgz#0a002cc85707192a7e7946ceedc11155f60ec736"
894 | dependencies:
895 | depd "1.1.1"
896 | inherits "2.0.3"
897 | setprototypeof "1.0.3"
898 | statuses ">= 1.3.1 < 2"
899 |
900 | http-signature@~1.1.0:
901 | version "1.1.1"
902 | resolved "https://registry.yarnpkg.com/http-signature/-/http-signature-1.1.1.tgz#df72e267066cd0ac67fb76adf8e134a8fbcf91bf"
903 | dependencies:
904 | assert-plus "^0.2.0"
905 | jsprim "^1.2.2"
906 | sshpk "^1.7.0"
907 |
908 | iconv-lite@0.4.19, iconv-lite@^0.4.18:
909 | version "0.4.19"
910 | resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.19.tgz#f7468f60135f5e5dad3399c0a81be9a1603a082b"
911 |
912 | ignore-by-default@^1.0.1:
913 | version "1.0.1"
914 | resolved "https://registry.yarnpkg.com/ignore-by-default/-/ignore-by-default-1.0.1.tgz#48ca6d72f6c6a3af00a9ad4ae6876be3889e2b09"
915 |
916 | import-lazy@^2.1.0:
917 | version "2.1.0"
918 | resolved "https://registry.yarnpkg.com/import-lazy/-/import-lazy-2.1.0.tgz#05698e3d45c88e8d7e9d92cb0584e77f096f3e43"
919 |
920 | imurmurhash@^0.1.4:
921 | version "0.1.4"
922 | resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea"
923 |
924 | indexof@0.0.1:
925 | version "0.0.1"
926 | resolved "https://registry.yarnpkg.com/indexof/-/indexof-0.0.1.tgz#82dc336d232b9062179d05ab3293a66059fd435d"
927 |
928 | inflection@1.12.0:
929 | version "1.12.0"
930 | resolved "https://registry.yarnpkg.com/inflection/-/inflection-1.12.0.tgz#a200935656d6f5f6bc4dc7502e1aecb703228416"
931 |
932 | inflight@^1.0.4:
933 | version "1.0.6"
934 | resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9"
935 | dependencies:
936 | once "^1.3.0"
937 | wrappy "1"
938 |
939 | inherits@2, inherits@2.0.3, inherits@^2.0.1, inherits@~2.0.0, inherits@~2.0.3:
940 | version "2.0.3"
941 | resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de"
942 |
943 | ini@^1.3.4, ini@~1.3.0:
944 | version "1.3.5"
945 | resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.5.tgz#eee25f56db1c9ec6085e0c22778083f596abf927"
946 |
947 | ipaddr.js@1.5.2:
948 | version "1.5.2"
949 | resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.5.2.tgz#d4b505bde9946987ccf0fc58d9010ff9607e3fa0"
950 |
951 | is-binary-path@^1.0.0:
952 | version "1.0.1"
953 | resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-1.0.1.tgz#75f16642b480f187a711c814161fd3a4a7655898"
954 | dependencies:
955 | binary-extensions "^1.0.0"
956 |
957 | is-bluebird@^1.0.2:
958 | version "1.0.2"
959 | resolved "https://registry.yarnpkg.com/is-bluebird/-/is-bluebird-1.0.2.tgz#096439060f4aa411abee19143a84d6a55346d6e2"
960 |
961 | is-buffer@^1.1.5:
962 | version "1.1.6"
963 | resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be"
964 |
965 | is-dotfile@^1.0.0:
966 | version "1.0.3"
967 | resolved "https://registry.yarnpkg.com/is-dotfile/-/is-dotfile-1.0.3.tgz#a6a2f32ffd2dfb04f5ca25ecd0f6b83cf798a1e1"
968 |
969 | is-equal-shallow@^0.1.3:
970 | version "0.1.3"
971 | resolved "https://registry.yarnpkg.com/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz#2238098fc221de0bcfa5d9eac4c45d638aa1c534"
972 | dependencies:
973 | is-primitive "^2.0.0"
974 |
975 | is-extendable@^0.1.1:
976 | version "0.1.1"
977 | resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-0.1.1.tgz#62b110e289a471418e3ec36a617d472e301dfc89"
978 |
979 | is-extglob@^1.0.0:
980 | version "1.0.0"
981 | resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-1.0.0.tgz#ac468177c4943405a092fc8f29760c6ffc6206c0"
982 |
983 | is-fullwidth-code-point@^1.0.0:
984 | version "1.0.0"
985 | resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz#ef9e31386f031a7f0d643af82fde50c457ef00cb"
986 | dependencies:
987 | number-is-nan "^1.0.0"
988 |
989 | is-fullwidth-code-point@^2.0.0:
990 | version "2.0.0"
991 | resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f"
992 |
993 | is-glob@^2.0.0, is-glob@^2.0.1:
994 | version "2.0.1"
995 | resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-2.0.1.tgz#d096f926a3ded5600f3fdfd91198cb0888c2d863"
996 | dependencies:
997 | is-extglob "^1.0.0"
998 |
999 | is-installed-globally@^0.1.0:
1000 | version "0.1.0"
1001 | resolved "https://registry.yarnpkg.com/is-installed-globally/-/is-installed-globally-0.1.0.tgz#0dfd98f5a9111716dd535dda6492f67bf3d25a80"
1002 | dependencies:
1003 | global-dirs "^0.1.0"
1004 | is-path-inside "^1.0.0"
1005 |
1006 | is-npm@^1.0.0:
1007 | version "1.0.0"
1008 | resolved "https://registry.yarnpkg.com/is-npm/-/is-npm-1.0.0.tgz#f2fb63a65e4905b406c86072765a1a4dc793b9f4"
1009 |
1010 | is-number@^2.1.0:
1011 | version "2.1.0"
1012 | resolved "https://registry.yarnpkg.com/is-number/-/is-number-2.1.0.tgz#01fcbbb393463a548f2f466cce16dece49db908f"
1013 | dependencies:
1014 | kind-of "^3.0.2"
1015 |
1016 | is-number@^3.0.0:
1017 | version "3.0.0"
1018 | resolved "https://registry.yarnpkg.com/is-number/-/is-number-3.0.0.tgz#24fd6201a4782cf50561c810276afc7d12d71195"
1019 | dependencies:
1020 | kind-of "^3.0.2"
1021 |
1022 | is-obj@^1.0.0:
1023 | version "1.0.1"
1024 | resolved "https://registry.yarnpkg.com/is-obj/-/is-obj-1.0.1.tgz#3e4729ac1f5fde025cd7d83a896dab9f4f67db0f"
1025 |
1026 | is-path-inside@^1.0.0:
1027 | version "1.0.1"
1028 | resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-1.0.1.tgz#8ef5b7de50437a3fdca6b4e865ef7aa55cb48036"
1029 | dependencies:
1030 | path-is-inside "^1.0.1"
1031 |
1032 | is-posix-bracket@^0.1.0:
1033 | version "0.1.1"
1034 | resolved "https://registry.yarnpkg.com/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz#3334dc79774368e92f016e6fbc0a88f5cd6e6bc4"
1035 |
1036 | is-primitive@^2.0.0:
1037 | version "2.0.0"
1038 | resolved "https://registry.yarnpkg.com/is-primitive/-/is-primitive-2.0.0.tgz#207bab91638499c07b2adf240a41a87210034575"
1039 |
1040 | is-redirect@^1.0.0:
1041 | version "1.0.0"
1042 | resolved "https://registry.yarnpkg.com/is-redirect/-/is-redirect-1.0.0.tgz#1d03dded53bd8db0f30c26e4f95d36fc7c87dc24"
1043 |
1044 | is-retry-allowed@^1.0.0:
1045 | version "1.1.0"
1046 | resolved "https://registry.yarnpkg.com/is-retry-allowed/-/is-retry-allowed-1.1.0.tgz#11a060568b67339444033d0125a61a20d564fb34"
1047 |
1048 | is-stream@^1.0.0, is-stream@^1.1.0:
1049 | version "1.1.0"
1050 | resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44"
1051 |
1052 | is-typedarray@~1.0.0:
1053 | version "1.0.0"
1054 | resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a"
1055 |
1056 | isarray@1.0.0, isarray@~1.0.0:
1057 | version "1.0.0"
1058 | resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11"
1059 |
1060 | isarray@2.0.1:
1061 | version "2.0.1"
1062 | resolved "https://registry.yarnpkg.com/isarray/-/isarray-2.0.1.tgz#a37d94ed9cda2d59865c9f76fe596ee1f338741e"
1063 |
1064 | isexe@^2.0.0:
1065 | version "2.0.0"
1066 | resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10"
1067 |
1068 | isobject@^2.0.0:
1069 | version "2.1.0"
1070 | resolved "https://registry.yarnpkg.com/isobject/-/isobject-2.1.0.tgz#f065561096a3f1da2ef46272f815c840d87e0c89"
1071 | dependencies:
1072 | isarray "1.0.0"
1073 |
1074 | isstream@~0.1.2:
1075 | version "0.1.2"
1076 | resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a"
1077 |
1078 | jsbn@~0.1.0:
1079 | version "0.1.1"
1080 | resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513"
1081 |
1082 | json-schema@0.2.3:
1083 | version "0.2.3"
1084 | resolved "https://registry.yarnpkg.com/json-schema/-/json-schema-0.2.3.tgz#b480c892e59a2f05954ce727bd3f2a4e882f9e13"
1085 |
1086 | json-stable-stringify@^1.0.1:
1087 | version "1.0.1"
1088 | resolved "https://registry.yarnpkg.com/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz#9a759d39c5f2ff503fd5300646ed445f88c4f9af"
1089 | dependencies:
1090 | jsonify "~0.0.0"
1091 |
1092 | json-stringify-safe@~5.0.1:
1093 | version "5.0.1"
1094 | resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb"
1095 |
1096 | jsonify@~0.0.0:
1097 | version "0.0.0"
1098 | resolved "https://registry.yarnpkg.com/jsonify/-/jsonify-0.0.0.tgz#2c74b6ee41d93ca51b7b5aaee8f503631d252a73"
1099 |
1100 | jsprim@^1.2.2:
1101 | version "1.4.1"
1102 | resolved "https://registry.yarnpkg.com/jsprim/-/jsprim-1.4.1.tgz#313e66bc1e5cc06e438bc1b7499c2e5c56acb6a2"
1103 | dependencies:
1104 | assert-plus "1.0.0"
1105 | extsprintf "1.3.0"
1106 | json-schema "0.2.3"
1107 | verror "1.10.0"
1108 |
1109 | kind-of@^3.0.2:
1110 | version "3.2.2"
1111 | resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-3.2.2.tgz#31ea21a734bab9bbb0f32466d893aea51e4a3c64"
1112 | dependencies:
1113 | is-buffer "^1.1.5"
1114 |
1115 | kind-of@^4.0.0:
1116 | version "4.0.0"
1117 | resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-4.0.0.tgz#20813df3d712928b207378691a45066fae72dd57"
1118 | dependencies:
1119 | is-buffer "^1.1.5"
1120 |
1121 | latest-version@^3.0.0:
1122 | version "3.1.0"
1123 | resolved "https://registry.yarnpkg.com/latest-version/-/latest-version-3.1.0.tgz#a205383fea322b33b5ae3b18abee0dc2f356ee15"
1124 | dependencies:
1125 | package-json "^4.0.0"
1126 |
1127 | lodash._baseassign@^3.0.0:
1128 | version "3.2.0"
1129 | resolved "https://registry.yarnpkg.com/lodash._baseassign/-/lodash._baseassign-3.2.0.tgz#8c38a099500f215ad09e59f1722fd0c52bfe0a4e"
1130 | dependencies:
1131 | lodash._basecopy "^3.0.0"
1132 | lodash.keys "^3.0.0"
1133 |
1134 | lodash._basecopy@^3.0.0:
1135 | version "3.0.1"
1136 | resolved "https://registry.yarnpkg.com/lodash._basecopy/-/lodash._basecopy-3.0.1.tgz#8da0e6a876cf344c0ad8a54882111dd3c5c7ca36"
1137 |
1138 | lodash._bindcallback@^3.0.0:
1139 | version "3.0.1"
1140 | resolved "https://registry.yarnpkg.com/lodash._bindcallback/-/lodash._bindcallback-3.0.1.tgz#e531c27644cf8b57a99e17ed95b35c748789392e"
1141 |
1142 | lodash._createassigner@^3.0.0:
1143 | version "3.1.1"
1144 | resolved "https://registry.yarnpkg.com/lodash._createassigner/-/lodash._createassigner-3.1.1.tgz#838a5bae2fdaca63ac22dee8e19fa4e6d6970b11"
1145 | dependencies:
1146 | lodash._bindcallback "^3.0.0"
1147 | lodash._isiterateecall "^3.0.0"
1148 | lodash.restparam "^3.0.0"
1149 |
1150 | lodash._getnative@^3.0.0:
1151 | version "3.9.1"
1152 | resolved "https://registry.yarnpkg.com/lodash._getnative/-/lodash._getnative-3.9.1.tgz#570bc7dede46d61cdcde687d65d3eecbaa3aaff5"
1153 |
1154 | lodash._isiterateecall@^3.0.0:
1155 | version "3.0.9"
1156 | resolved "https://registry.yarnpkg.com/lodash._isiterateecall/-/lodash._isiterateecall-3.0.9.tgz#5203ad7ba425fae842460e696db9cf3e6aac057c"
1157 |
1158 | lodash.assign@^3.0.0:
1159 | version "3.2.0"
1160 | resolved "https://registry.yarnpkg.com/lodash.assign/-/lodash.assign-3.2.0.tgz#3ce9f0234b4b2223e296b8fa0ac1fee8ebca64fa"
1161 | dependencies:
1162 | lodash._baseassign "^3.0.0"
1163 | lodash._createassigner "^3.0.0"
1164 | lodash.keys "^3.0.0"
1165 |
1166 | lodash.defaults@^3.1.2:
1167 | version "3.1.2"
1168 | resolved "https://registry.yarnpkg.com/lodash.defaults/-/lodash.defaults-3.1.2.tgz#c7308b18dbf8bc9372d701a73493c61192bd2e2c"
1169 | dependencies:
1170 | lodash.assign "^3.0.0"
1171 | lodash.restparam "^3.0.0"
1172 |
1173 | lodash.isarguments@^3.0.0:
1174 | version "3.1.0"
1175 | resolved "https://registry.yarnpkg.com/lodash.isarguments/-/lodash.isarguments-3.1.0.tgz#2f573d85c6a24289ff00663b491c1d338ff3458a"
1176 |
1177 | lodash.isarray@^3.0.0:
1178 | version "3.0.4"
1179 | resolved "https://registry.yarnpkg.com/lodash.isarray/-/lodash.isarray-3.0.4.tgz#79e4eb88c36a8122af86f844aa9bcd851b5fbb55"
1180 |
1181 | lodash.keys@^3.0.0:
1182 | version "3.1.2"
1183 | resolved "https://registry.yarnpkg.com/lodash.keys/-/lodash.keys-3.1.2.tgz#4dbc0472b156be50a0b286855d1bd0b0c656098a"
1184 | dependencies:
1185 | lodash._getnative "^3.0.0"
1186 | lodash.isarguments "^3.0.0"
1187 | lodash.isarray "^3.0.0"
1188 |
1189 | lodash.restparam@^3.0.0:
1190 | version "3.6.1"
1191 | resolved "https://registry.yarnpkg.com/lodash.restparam/-/lodash.restparam-3.6.1.tgz#936a4e309ef330a7645ed4145986c85ae5b20805"
1192 |
1193 | lodash@^4.17.1, lodash@^4.5.1:
1194 | version "4.17.4"
1195 | resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.4.tgz#78203a4d1c328ae1d86dca6460e369b57f4055ae"
1196 |
1197 | long@^3.2.0:
1198 | version "3.2.0"
1199 | resolved "https://registry.yarnpkg.com/long/-/long-3.2.0.tgz#d821b7138ca1cb581c172990ef14db200b5c474b"
1200 |
1201 | lowercase-keys@^1.0.0:
1202 | version "1.0.0"
1203 | resolved "https://registry.yarnpkg.com/lowercase-keys/-/lowercase-keys-1.0.0.tgz#4e3366b39e7f5457e35f1324bdf6f88d0bfc7306"
1204 |
1205 | lru-cache@2.5.0:
1206 | version "2.5.0"
1207 | resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-2.5.0.tgz#d82388ae9c960becbea0c73bb9eb79b6c6ce9aeb"
1208 |
1209 | lru-cache@^4.0.1, lru-cache@^4.1.1:
1210 | version "4.1.1"
1211 | resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-4.1.1.tgz#622e32e82488b49279114a4f9ecf45e7cd6bba55"
1212 | dependencies:
1213 | pseudomap "^1.0.2"
1214 | yallist "^2.1.2"
1215 |
1216 | make-dir@^1.0.0:
1217 | version "1.1.0"
1218 | resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-1.1.0.tgz#19b4369fe48c116f53c2af95ad102c0e39e85d51"
1219 | dependencies:
1220 | pify "^3.0.0"
1221 |
1222 | map-stream@~0.1.0:
1223 | version "0.1.0"
1224 | resolved "https://registry.yarnpkg.com/map-stream/-/map-stream-0.1.0.tgz#e56aa94c4c8055a16404a0674b78f215f7c8e194"
1225 |
1226 | media-typer@0.3.0:
1227 | version "0.3.0"
1228 | resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748"
1229 |
1230 | merge-descriptors@1.0.1:
1231 | version "1.0.1"
1232 | resolved "https://registry.yarnpkg.com/merge-descriptors/-/merge-descriptors-1.0.1.tgz#b00aaa556dd8b44568150ec9d1b953f3f90cbb61"
1233 |
1234 | methods@~1.1.2:
1235 | version "1.1.2"
1236 | resolved "https://registry.yarnpkg.com/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee"
1237 |
1238 | micromatch@^2.1.5:
1239 | version "2.3.11"
1240 | resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-2.3.11.tgz#86677c97d1720b363431d04d0d15293bd38c1565"
1241 | dependencies:
1242 | arr-diff "^2.0.0"
1243 | array-unique "^0.2.1"
1244 | braces "^1.8.2"
1245 | expand-brackets "^0.1.4"
1246 | extglob "^0.3.1"
1247 | filename-regex "^2.0.0"
1248 | is-extglob "^1.0.0"
1249 | is-glob "^2.0.1"
1250 | kind-of "^3.0.2"
1251 | normalize-path "^2.0.1"
1252 | object.omit "^2.0.0"
1253 | parse-glob "^3.0.4"
1254 | regex-cache "^0.4.2"
1255 |
1256 | mime-db@~1.30.0:
1257 | version "1.30.0"
1258 | resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.30.0.tgz#74c643da2dd9d6a45399963465b26d5ca7d71f01"
1259 |
1260 | mime-types@^2.1.12, mime-types@~2.1.11, mime-types@~2.1.15, mime-types@~2.1.16, mime-types@~2.1.7:
1261 | version "2.1.17"
1262 | resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.17.tgz#09d7a393f03e995a79f8af857b70a9e0ab16557a"
1263 | dependencies:
1264 | mime-db "~1.30.0"
1265 |
1266 | mime@1.4.1:
1267 | version "1.4.1"
1268 | resolved "https://registry.yarnpkg.com/mime/-/mime-1.4.1.tgz#121f9ebc49e3766f311a76e1fa1c8003c4b03aa6"
1269 |
1270 | minimatch@^3.0.0, minimatch@^3.0.2, minimatch@^3.0.4:
1271 | version "3.0.4"
1272 | resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083"
1273 | dependencies:
1274 | brace-expansion "^1.1.7"
1275 |
1276 | minimist@0.0.8:
1277 | version "0.0.8"
1278 | resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d"
1279 |
1280 | minimist@^1.2.0:
1281 | version "1.2.0"
1282 | resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.0.tgz#a35008b20f41383eec1fb914f4cd5df79a264284"
1283 |
1284 | "mkdirp@>=0.5 0", mkdirp@^0.5.1:
1285 | version "0.5.1"
1286 | resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903"
1287 | dependencies:
1288 | minimist "0.0.8"
1289 |
1290 | moment-timezone@^0.5.4:
1291 | version "0.5.14"
1292 | resolved "https://registry.yarnpkg.com/moment-timezone/-/moment-timezone-0.5.14.tgz#4eb38ff9538b80108ba467a458f3ed4268ccfcb1"
1293 | dependencies:
1294 | moment ">= 2.9.0"
1295 |
1296 | "moment@>= 2.9.0", moment@^2.13.0:
1297 | version "2.19.3"
1298 | resolved "https://registry.yarnpkg.com/moment/-/moment-2.19.3.tgz#bdb99d270d6d7fda78cc0fbace855e27fe7da69f"
1299 |
1300 | ms@2.0.0:
1301 | version "2.0.0"
1302 | resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8"
1303 |
1304 | mysql2@^1.5.1:
1305 | version "1.5.1"
1306 | resolved "https://registry.yarnpkg.com/mysql2/-/mysql2-1.5.1.tgz#2411d6fb958af86b2304b7a53bc54b26e77e682b"
1307 | dependencies:
1308 | cardinal "1.0.0"
1309 | denque "^1.1.1"
1310 | generate-function "^2.0.0"
1311 | iconv-lite "^0.4.18"
1312 | long "^3.2.0"
1313 | lru-cache "^4.1.1"
1314 | named-placeholders "1.1.1"
1315 | object-assign "^4.1.1"
1316 | readable-stream "2.3.2"
1317 | safe-buffer "^5.0.1"
1318 | seq-queue "0.0.5"
1319 | sqlstring "^2.2.0"
1320 |
1321 | named-placeholders@1.1.1:
1322 | version "1.1.1"
1323 | resolved "https://registry.yarnpkg.com/named-placeholders/-/named-placeholders-1.1.1.tgz#3b7a0d26203dd74b3a9df4c9cfb827b2fb907e64"
1324 | dependencies:
1325 | lru-cache "2.5.0"
1326 |
1327 | nan@^2.3.0:
1328 | version "2.8.0"
1329 | resolved "https://registry.yarnpkg.com/nan/-/nan-2.8.0.tgz#ed715f3fe9de02b57a5e6252d90a96675e1f085a"
1330 |
1331 | negotiator@0.6.1:
1332 | version "0.6.1"
1333 | resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.1.tgz#2b327184e8992101177b28563fb5e7102acd0ca9"
1334 |
1335 | node-pre-gyp@^0.6.39:
1336 | version "0.6.39"
1337 | resolved "https://registry.yarnpkg.com/node-pre-gyp/-/node-pre-gyp-0.6.39.tgz#c00e96860b23c0e1420ac7befc5044e1d78d8649"
1338 | dependencies:
1339 | detect-libc "^1.0.2"
1340 | hawk "3.1.3"
1341 | mkdirp "^0.5.1"
1342 | nopt "^4.0.1"
1343 | npmlog "^4.0.2"
1344 | rc "^1.1.7"
1345 | request "2.81.0"
1346 | rimraf "^2.6.1"
1347 | semver "^5.3.0"
1348 | tar "^2.2.1"
1349 | tar-pack "^3.4.0"
1350 |
1351 | nodemon@^1.11.0:
1352 | version "1.12.1"
1353 | resolved "https://registry.yarnpkg.com/nodemon/-/nodemon-1.12.1.tgz#996a56dc49d9f16bbf1b78a4de08f13634b3878d"
1354 | dependencies:
1355 | chokidar "^1.7.0"
1356 | debug "^2.6.8"
1357 | es6-promise "^3.3.1"
1358 | ignore-by-default "^1.0.1"
1359 | lodash.defaults "^3.1.2"
1360 | minimatch "^3.0.4"
1361 | ps-tree "^1.1.0"
1362 | touch "^3.1.0"
1363 | undefsafe "0.0.3"
1364 | update-notifier "^2.2.0"
1365 |
1366 | nopt@^4.0.1:
1367 | version "4.0.1"
1368 | resolved "https://registry.yarnpkg.com/nopt/-/nopt-4.0.1.tgz#d0d4685afd5415193c8c7505602d0d17cd64474d"
1369 | dependencies:
1370 | abbrev "1"
1371 | osenv "^0.1.4"
1372 |
1373 | nopt@~1.0.10:
1374 | version "1.0.10"
1375 | resolved "https://registry.yarnpkg.com/nopt/-/nopt-1.0.10.tgz#6ddd21bd2a31417b92727dd585f8a6f37608ebee"
1376 | dependencies:
1377 | abbrev "1"
1378 |
1379 | normalize-path@^2.0.0, normalize-path@^2.0.1:
1380 | version "2.1.1"
1381 | resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-2.1.1.tgz#1ab28b556e198363a8c1a6f7e6fa20137fe6aed9"
1382 | dependencies:
1383 | remove-trailing-separator "^1.0.1"
1384 |
1385 | npm-run-path@^2.0.0:
1386 | version "2.0.2"
1387 | resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-2.0.2.tgz#35a9232dfa35d7067b4cb2ddf2357b1871536c5f"
1388 | dependencies:
1389 | path-key "^2.0.0"
1390 |
1391 | npmlog@^4.0.2:
1392 | version "4.1.2"
1393 | resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-4.1.2.tgz#08a7f2a8bf734604779a9efa4ad5cc717abb954b"
1394 | dependencies:
1395 | are-we-there-yet "~1.1.2"
1396 | console-control-strings "~1.1.0"
1397 | gauge "~2.7.3"
1398 | set-blocking "~2.0.0"
1399 |
1400 | number-is-nan@^1.0.0:
1401 | version "1.0.1"
1402 | resolved "https://registry.yarnpkg.com/number-is-nan/-/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d"
1403 |
1404 | oauth-sign@~0.8.1:
1405 | version "0.8.2"
1406 | resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.8.2.tgz#46a6ab7f0aead8deae9ec0565780b7d4efeb9d43"
1407 |
1408 | object-assign@^4.1.0, object-assign@^4.1.1:
1409 | version "4.1.1"
1410 | resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863"
1411 |
1412 | object-component@0.0.3:
1413 | version "0.0.3"
1414 | resolved "https://registry.yarnpkg.com/object-component/-/object-component-0.0.3.tgz#f0c69aa50efc95b866c186f400a33769cb2f1291"
1415 |
1416 | object.omit@^2.0.0:
1417 | version "2.0.1"
1418 | resolved "https://registry.yarnpkg.com/object.omit/-/object.omit-2.0.1.tgz#1a9c744829f39dbb858c76ca3579ae2a54ebd1fa"
1419 | dependencies:
1420 | for-own "^0.1.4"
1421 | is-extendable "^0.1.1"
1422 |
1423 | on-finished@~2.3.0:
1424 | version "2.3.0"
1425 | resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.3.0.tgz#20f1336481b083cd75337992a16971aa2d906947"
1426 | dependencies:
1427 | ee-first "1.1.1"
1428 |
1429 | once@^1.3.0, once@^1.3.3:
1430 | version "1.4.0"
1431 | resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1"
1432 | dependencies:
1433 | wrappy "1"
1434 |
1435 | os-homedir@^1.0.0:
1436 | version "1.0.2"
1437 | resolved "https://registry.yarnpkg.com/os-homedir/-/os-homedir-1.0.2.tgz#ffbc4988336e0e833de0c168c7ef152121aa7fb3"
1438 |
1439 | os-tmpdir@^1.0.0:
1440 | version "1.0.2"
1441 | resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274"
1442 |
1443 | osenv@^0.1.4:
1444 | version "0.1.4"
1445 | resolved "https://registry.yarnpkg.com/osenv/-/osenv-0.1.4.tgz#42fe6d5953df06c8064be6f176c3d05aaaa34644"
1446 | dependencies:
1447 | os-homedir "^1.0.0"
1448 | os-tmpdir "^1.0.0"
1449 |
1450 | p-finally@^1.0.0:
1451 | version "1.0.0"
1452 | resolved "https://registry.yarnpkg.com/p-finally/-/p-finally-1.0.0.tgz#3fbcfb15b899a44123b34b6dcc18b724336a2cae"
1453 |
1454 | package-json@^4.0.0:
1455 | version "4.0.1"
1456 | resolved "https://registry.yarnpkg.com/package-json/-/package-json-4.0.1.tgz#8869a0401253661c4c4ca3da6c2121ed555f5eed"
1457 | dependencies:
1458 | got "^6.7.1"
1459 | registry-auth-token "^3.0.1"
1460 | registry-url "^3.0.3"
1461 | semver "^5.1.0"
1462 |
1463 | parse-glob@^3.0.4:
1464 | version "3.0.4"
1465 | resolved "https://registry.yarnpkg.com/parse-glob/-/parse-glob-3.0.4.tgz#b2c376cfb11f35513badd173ef0bb6e3a388391c"
1466 | dependencies:
1467 | glob-base "^0.3.0"
1468 | is-dotfile "^1.0.0"
1469 | is-extglob "^1.0.0"
1470 | is-glob "^2.0.0"
1471 |
1472 | parseqs@0.0.5:
1473 | version "0.0.5"
1474 | resolved "https://registry.yarnpkg.com/parseqs/-/parseqs-0.0.5.tgz#d5208a3738e46766e291ba2ea173684921a8b89d"
1475 | dependencies:
1476 | better-assert "~1.0.0"
1477 |
1478 | parseuri@0.0.5:
1479 | version "0.0.5"
1480 | resolved "https://registry.yarnpkg.com/parseuri/-/parseuri-0.0.5.tgz#80204a50d4dbb779bfdc6ebe2778d90e4bce320a"
1481 | dependencies:
1482 | better-assert "~1.0.0"
1483 |
1484 | parseurl@~1.3.2:
1485 | version "1.3.2"
1486 | resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.2.tgz#fc289d4ed8993119460c156253262cdc8de65bf3"
1487 |
1488 | path-is-absolute@^1.0.0:
1489 | version "1.0.1"
1490 | resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f"
1491 |
1492 | path-is-inside@^1.0.1:
1493 | version "1.0.2"
1494 | resolved "https://registry.yarnpkg.com/path-is-inside/-/path-is-inside-1.0.2.tgz#365417dede44430d1c11af61027facf074bdfc53"
1495 |
1496 | path-key@^2.0.0:
1497 | version "2.0.1"
1498 | resolved "https://registry.yarnpkg.com/path-key/-/path-key-2.0.1.tgz#411cadb574c5a140d3a4b1910d40d80cc9f40b40"
1499 |
1500 | path-to-regexp@0.1.7:
1501 | version "0.1.7"
1502 | resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-0.1.7.tgz#df604178005f522f15eb4490e7247a1bfaa67f8c"
1503 |
1504 | pause-stream@0.0.11:
1505 | version "0.0.11"
1506 | resolved "https://registry.yarnpkg.com/pause-stream/-/pause-stream-0.0.11.tgz#fe5a34b0cbce12b5aa6a2b403ee2e73b602f1445"
1507 | dependencies:
1508 | through "~2.3"
1509 |
1510 | performance-now@^0.2.0:
1511 | version "0.2.0"
1512 | resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-0.2.0.tgz#33ef30c5c77d4ea21c5a53869d91b56d8f2555e5"
1513 |
1514 | pify@^3.0.0:
1515 | version "3.0.0"
1516 | resolved "https://registry.yarnpkg.com/pify/-/pify-3.0.0.tgz#e5a4acd2c101fdf3d9a4d07f0dbc4db49dd28176"
1517 |
1518 | prepend-http@^1.0.1:
1519 | version "1.0.4"
1520 | resolved "https://registry.yarnpkg.com/prepend-http/-/prepend-http-1.0.4.tgz#d4f4562b0ce3696e41ac52d0e002e57a635dc6dc"
1521 |
1522 | preserve@^0.2.0:
1523 | version "0.2.0"
1524 | resolved "https://registry.yarnpkg.com/preserve/-/preserve-0.2.0.tgz#815ed1f6ebc65926f865b310c0713bcb3315ce4b"
1525 |
1526 | process-nextick-args@~1.0.6:
1527 | version "1.0.7"
1528 | resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-1.0.7.tgz#150e20b756590ad3f91093f25a4f2ad8bff30ba3"
1529 |
1530 | proxy-addr@~2.0.2:
1531 | version "2.0.2"
1532 | resolved "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-2.0.2.tgz#6571504f47bb988ec8180253f85dd7e14952bdec"
1533 | dependencies:
1534 | forwarded "~0.1.2"
1535 | ipaddr.js "1.5.2"
1536 |
1537 | ps-tree@^1.1.0:
1538 | version "1.1.0"
1539 | resolved "https://registry.yarnpkg.com/ps-tree/-/ps-tree-1.1.0.tgz#b421b24140d6203f1ed3c76996b4427b08e8c014"
1540 | dependencies:
1541 | event-stream "~3.3.0"
1542 |
1543 | pseudomap@^1.0.2:
1544 | version "1.0.2"
1545 | resolved "https://registry.yarnpkg.com/pseudomap/-/pseudomap-1.0.2.tgz#f052a28da70e618917ef0a8ac34c1ae5a68286b3"
1546 |
1547 | punycode@^1.4.1:
1548 | version "1.4.1"
1549 | resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e"
1550 |
1551 | qs@6.5.1:
1552 | version "6.5.1"
1553 | resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.1.tgz#349cdf6eef89ec45c12d7d5eb3fc0c870343a6d8"
1554 |
1555 | qs@~6.4.0:
1556 | version "6.4.0"
1557 | resolved "https://registry.yarnpkg.com/qs/-/qs-6.4.0.tgz#13e26d28ad6b0ffaa91312cd3bf708ed351e7233"
1558 |
1559 | randomatic@^1.1.3:
1560 | version "1.1.7"
1561 | resolved "https://registry.yarnpkg.com/randomatic/-/randomatic-1.1.7.tgz#c7abe9cc8b87c0baa876b19fde83fd464797e38c"
1562 | dependencies:
1563 | is-number "^3.0.0"
1564 | kind-of "^4.0.0"
1565 |
1566 | range-parser@~1.2.0:
1567 | version "1.2.0"
1568 | resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.0.tgz#f49be6b487894ddc40dcc94a322f611092e00d5e"
1569 |
1570 | raw-body@2.3.2:
1571 | version "2.3.2"
1572 | resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.3.2.tgz#bcd60c77d3eb93cde0050295c3f379389bc88f89"
1573 | dependencies:
1574 | bytes "3.0.0"
1575 | http-errors "1.6.2"
1576 | iconv-lite "0.4.19"
1577 | unpipe "1.0.0"
1578 |
1579 | rc@^1.0.1, rc@^1.1.6, rc@^1.1.7:
1580 | version "1.2.2"
1581 | resolved "https://registry.yarnpkg.com/rc/-/rc-1.2.2.tgz#d8ce9cb57e8d64d9c7badd9876c7c34cbe3c7077"
1582 | dependencies:
1583 | deep-extend "~0.4.0"
1584 | ini "~1.3.0"
1585 | minimist "^1.2.0"
1586 | strip-json-comments "~2.0.1"
1587 |
1588 | readable-stream@2.3.2:
1589 | version "2.3.2"
1590 | resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.2.tgz#5a04df05e4f57fe3f0dc68fdd11dc5c97c7e6f4d"
1591 | dependencies:
1592 | core-util-is "~1.0.0"
1593 | inherits "~2.0.3"
1594 | isarray "~1.0.0"
1595 | process-nextick-args "~1.0.6"
1596 | safe-buffer "~5.1.0"
1597 | string_decoder "~1.0.0"
1598 | util-deprecate "~1.0.1"
1599 |
1600 | readable-stream@^2.0.2, readable-stream@^2.0.6, readable-stream@^2.1.4:
1601 | version "2.3.3"
1602 | resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.3.tgz#368f2512d79f9d46fdfc71349ae7878bbc1eb95c"
1603 | dependencies:
1604 | core-util-is "~1.0.0"
1605 | inherits "~2.0.3"
1606 | isarray "~1.0.0"
1607 | process-nextick-args "~1.0.6"
1608 | safe-buffer "~5.1.1"
1609 | string_decoder "~1.0.3"
1610 | util-deprecate "~1.0.1"
1611 |
1612 | readdirp@^2.0.0:
1613 | version "2.1.0"
1614 | resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-2.1.0.tgz#4ed0ad060df3073300c48440373f72d1cc642d78"
1615 | dependencies:
1616 | graceful-fs "^4.1.2"
1617 | minimatch "^3.0.2"
1618 | readable-stream "^2.0.2"
1619 | set-immediate-shim "^1.0.1"
1620 |
1621 | redeyed@~1.0.0:
1622 | version "1.0.1"
1623 | resolved "https://registry.yarnpkg.com/redeyed/-/redeyed-1.0.1.tgz#e96c193b40c0816b00aec842698e61185e55498a"
1624 | dependencies:
1625 | esprima "~3.0.0"
1626 |
1627 | regex-cache@^0.4.2:
1628 | version "0.4.4"
1629 | resolved "https://registry.yarnpkg.com/regex-cache/-/regex-cache-0.4.4.tgz#75bdc58a2a1496cec48a12835bc54c8d562336dd"
1630 | dependencies:
1631 | is-equal-shallow "^0.1.3"
1632 |
1633 | registry-auth-token@^3.0.1:
1634 | version "3.3.1"
1635 | resolved "https://registry.yarnpkg.com/registry-auth-token/-/registry-auth-token-3.3.1.tgz#fb0d3289ee0d9ada2cbb52af5dfe66cb070d3006"
1636 | dependencies:
1637 | rc "^1.1.6"
1638 | safe-buffer "^5.0.1"
1639 |
1640 | registry-url@^3.0.3:
1641 | version "3.1.0"
1642 | resolved "https://registry.yarnpkg.com/registry-url/-/registry-url-3.1.0.tgz#3d4ef870f73dde1d77f0cf9a381432444e174942"
1643 | dependencies:
1644 | rc "^1.0.1"
1645 |
1646 | remove-trailing-separator@^1.0.1:
1647 | version "1.1.0"
1648 | resolved "https://registry.yarnpkg.com/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz#c24bce2a283adad5bc3f58e0d48249b92379d8ef"
1649 |
1650 | repeat-element@^1.1.2:
1651 | version "1.1.2"
1652 | resolved "https://registry.yarnpkg.com/repeat-element/-/repeat-element-1.1.2.tgz#ef089a178d1483baae4d93eb98b4f9e4e11d990a"
1653 |
1654 | repeat-string@^1.5.2:
1655 | version "1.6.1"
1656 | resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637"
1657 |
1658 | request@2.81.0:
1659 | version "2.81.0"
1660 | resolved "https://registry.yarnpkg.com/request/-/request-2.81.0.tgz#c6928946a0e06c5f8d6f8a9333469ffda46298a0"
1661 | dependencies:
1662 | aws-sign2 "~0.6.0"
1663 | aws4 "^1.2.1"
1664 | caseless "~0.12.0"
1665 | combined-stream "~1.0.5"
1666 | extend "~3.0.0"
1667 | forever-agent "~0.6.1"
1668 | form-data "~2.1.1"
1669 | har-validator "~4.2.1"
1670 | hawk "~3.1.3"
1671 | http-signature "~1.1.0"
1672 | is-typedarray "~1.0.0"
1673 | isstream "~0.1.2"
1674 | json-stringify-safe "~5.0.1"
1675 | mime-types "~2.1.7"
1676 | oauth-sign "~0.8.1"
1677 | performance-now "^0.2.0"
1678 | qs "~6.4.0"
1679 | safe-buffer "^5.0.1"
1680 | stringstream "~0.0.4"
1681 | tough-cookie "~2.3.0"
1682 | tunnel-agent "^0.6.0"
1683 | uuid "^3.0.0"
1684 |
1685 | retry-as-promised@^2.3.1:
1686 | version "2.3.2"
1687 | resolved "https://registry.yarnpkg.com/retry-as-promised/-/retry-as-promised-2.3.2.tgz#cd974ee4fd9b5fe03cbf31871ee48221c07737b7"
1688 | dependencies:
1689 | bluebird "^3.4.6"
1690 | debug "^2.6.9"
1691 |
1692 | rimraf@2, rimraf@^2.5.1, rimraf@^2.6.1:
1693 | version "2.6.2"
1694 | resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.2.tgz#2ed8150d24a16ea8651e6d6ef0f47c4158ce7a36"
1695 | dependencies:
1696 | glob "^7.0.5"
1697 |
1698 | rx@2.3.24:
1699 | version "2.3.24"
1700 | resolved "https://registry.yarnpkg.com/rx/-/rx-2.3.24.tgz#14f950a4217d7e35daa71bbcbe58eff68ea4b2b7"
1701 |
1702 | safe-buffer@5.1.1, safe-buffer@^5.0.1, safe-buffer@~5.1.0, safe-buffer@~5.1.1:
1703 | version "5.1.1"
1704 | resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.1.tgz#893312af69b2123def71f57889001671eeb2c853"
1705 |
1706 | semver-diff@^2.0.0:
1707 | version "2.1.0"
1708 | resolved "https://registry.yarnpkg.com/semver-diff/-/semver-diff-2.1.0.tgz#4bbb8437c8d37e4b0cf1a68fd726ec6d645d6d36"
1709 | dependencies:
1710 | semver "^5.0.3"
1711 |
1712 | semver@^5.0.1, semver@^5.0.3, semver@^5.1.0, semver@^5.3.0:
1713 | version "5.4.1"
1714 | resolved "https://registry.yarnpkg.com/semver/-/semver-5.4.1.tgz#e059c09d8571f0540823733433505d3a2f00b18e"
1715 |
1716 | send@0.16.1:
1717 | version "0.16.1"
1718 | resolved "https://registry.yarnpkg.com/send/-/send-0.16.1.tgz#a70e1ca21d1382c11d0d9f6231deb281080d7ab3"
1719 | dependencies:
1720 | debug "2.6.9"
1721 | depd "~1.1.1"
1722 | destroy "~1.0.4"
1723 | encodeurl "~1.0.1"
1724 | escape-html "~1.0.3"
1725 | etag "~1.8.1"
1726 | fresh "0.5.2"
1727 | http-errors "~1.6.2"
1728 | mime "1.4.1"
1729 | ms "2.0.0"
1730 | on-finished "~2.3.0"
1731 | range-parser "~1.2.0"
1732 | statuses "~1.3.1"
1733 |
1734 | seq-queue@0.0.5:
1735 | version "0.0.5"
1736 | resolved "https://registry.yarnpkg.com/seq-queue/-/seq-queue-0.0.5.tgz#d56812e1c017a6e4e7c3e3a37a1da6d78dd3c93e"
1737 |
1738 | sequelize@^4.22.15:
1739 | version "4.24.0"
1740 | resolved "https://registry.yarnpkg.com/sequelize/-/sequelize-4.24.0.tgz#c5e427a7389ce88c257c928d710a98b3770d1db8"
1741 | dependencies:
1742 | bluebird "^3.4.6"
1743 | cls-bluebird "^2.0.1"
1744 | debug "^3.0.0"
1745 | depd "^1.1.0"
1746 | dottie "^2.0.0"
1747 | generic-pool "^3.1.8"
1748 | inflection "1.12.0"
1749 | lodash "^4.17.1"
1750 | moment "^2.13.0"
1751 | moment-timezone "^0.5.4"
1752 | retry-as-promised "^2.3.1"
1753 | semver "^5.0.1"
1754 | terraformer-wkt-parser "^1.1.2"
1755 | toposort-class "^1.0.1"
1756 | uuid "^3.0.0"
1757 | validator "^9.1.0"
1758 | wkx "^0.4.1"
1759 |
1760 | serve-static@1.13.1:
1761 | version "1.13.1"
1762 | resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.13.1.tgz#4c57d53404a761d8f2e7c1e8a18a47dbf278a719"
1763 | dependencies:
1764 | encodeurl "~1.0.1"
1765 | escape-html "~1.0.3"
1766 | parseurl "~1.3.2"
1767 | send "0.16.1"
1768 |
1769 | set-blocking@~2.0.0:
1770 | version "2.0.0"
1771 | resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7"
1772 |
1773 | set-immediate-shim@^1.0.1:
1774 | version "1.0.1"
1775 | resolved "https://registry.yarnpkg.com/set-immediate-shim/-/set-immediate-shim-1.0.1.tgz#4b2b1b27eb808a9f8dcc481a58e5e56f599f3f61"
1776 |
1777 | setprototypeof@1.0.3:
1778 | version "1.0.3"
1779 | resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.0.3.tgz#66567e37043eeb4f04d91bd658c0cbefb55b8e04"
1780 |
1781 | setprototypeof@1.1.0:
1782 | version "1.1.0"
1783 | resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.1.0.tgz#d0bd85536887b6fe7c0d818cb962d9d91c54e656"
1784 |
1785 | shebang-command@^1.2.0:
1786 | version "1.2.0"
1787 | resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-1.2.0.tgz#44aac65b695b03398968c39f363fee5deafdf1ea"
1788 | dependencies:
1789 | shebang-regex "^1.0.0"
1790 |
1791 | shebang-regex@^1.0.0:
1792 | version "1.0.0"
1793 | resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-1.0.0.tgz#da42f49740c0b42db2ca9728571cb190c98efea3"
1794 |
1795 | shimmer@^1.1.0:
1796 | version "1.2.0"
1797 | resolved "https://registry.yarnpkg.com/shimmer/-/shimmer-1.2.0.tgz#f966f7555789763e74d8841193685a5e78736665"
1798 |
1799 | signal-exit@^3.0.0, signal-exit@^3.0.2:
1800 | version "3.0.2"
1801 | resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.2.tgz#b5fdc08f1287ea1178628e415e25132b73646c6d"
1802 |
1803 | sntp@1.x.x:
1804 | version "1.0.9"
1805 | resolved "https://registry.yarnpkg.com/sntp/-/sntp-1.0.9.tgz#6541184cc90aeea6c6e7b35e2659082443c66198"
1806 | dependencies:
1807 | hoek "2.x.x"
1808 |
1809 | socket.io-adapter@~1.1.0:
1810 | version "1.1.1"
1811 | resolved "https://registry.yarnpkg.com/socket.io-adapter/-/socket.io-adapter-1.1.1.tgz#2a805e8a14d6372124dd9159ad4502f8cb07f06b"
1812 |
1813 | socket.io-client@2.0.4:
1814 | version "2.0.4"
1815 | resolved "https://registry.yarnpkg.com/socket.io-client/-/socket.io-client-2.0.4.tgz#0918a552406dc5e540b380dcd97afc4a64332f8e"
1816 | dependencies:
1817 | backo2 "1.0.2"
1818 | base64-arraybuffer "0.1.5"
1819 | component-bind "1.0.0"
1820 | component-emitter "1.2.1"
1821 | debug "~2.6.4"
1822 | engine.io-client "~3.1.0"
1823 | has-cors "1.1.0"
1824 | indexof "0.0.1"
1825 | object-component "0.0.3"
1826 | parseqs "0.0.5"
1827 | parseuri "0.0.5"
1828 | socket.io-parser "~3.1.1"
1829 | to-array "0.1.4"
1830 |
1831 | socket.io-parser@~3.1.1:
1832 | version "3.1.2"
1833 | resolved "https://registry.yarnpkg.com/socket.io-parser/-/socket.io-parser-3.1.2.tgz#dbc2282151fc4faebbe40aeedc0772eba619f7f2"
1834 | dependencies:
1835 | component-emitter "1.2.1"
1836 | debug "~2.6.4"
1837 | has-binary2 "~1.0.2"
1838 | isarray "2.0.1"
1839 |
1840 | socket.io@^2.0.4:
1841 | version "2.0.4"
1842 | resolved "https://registry.yarnpkg.com/socket.io/-/socket.io-2.0.4.tgz#c1a4590ceff87ecf13c72652f046f716b29e6014"
1843 | dependencies:
1844 | debug "~2.6.6"
1845 | engine.io "~3.1.0"
1846 | socket.io-adapter "~1.1.0"
1847 | socket.io-client "2.0.4"
1848 | socket.io-parser "~3.1.1"
1849 |
1850 | spawn-command@^0.0.2-1:
1851 | version "0.0.2-1"
1852 | resolved "https://registry.yarnpkg.com/spawn-command/-/spawn-command-0.0.2-1.tgz#62f5e9466981c1b796dc5929937e11c9c6921bd0"
1853 |
1854 | split@0.3:
1855 | version "0.3.3"
1856 | resolved "https://registry.yarnpkg.com/split/-/split-0.3.3.tgz#cd0eea5e63a211dfff7eb0f091c4133e2d0dd28f"
1857 | dependencies:
1858 | through "2"
1859 |
1860 | sqlstring@^2.2.0:
1861 | version "2.3.0"
1862 | resolved "https://registry.yarnpkg.com/sqlstring/-/sqlstring-2.3.0.tgz#525b8a4fd26d6f71aa61e822a6caf976d31ad2a8"
1863 |
1864 | sshpk@^1.7.0:
1865 | version "1.13.1"
1866 | resolved "https://registry.yarnpkg.com/sshpk/-/sshpk-1.13.1.tgz#512df6da6287144316dc4c18fe1cf1d940739be3"
1867 | dependencies:
1868 | asn1 "~0.2.3"
1869 | assert-plus "^1.0.0"
1870 | dashdash "^1.12.0"
1871 | getpass "^0.1.1"
1872 | optionalDependencies:
1873 | bcrypt-pbkdf "^1.0.0"
1874 | ecc-jsbn "~0.1.1"
1875 | jsbn "~0.1.0"
1876 | tweetnacl "~0.14.0"
1877 |
1878 | "statuses@>= 1.3.1 < 2":
1879 | version "1.4.0"
1880 | resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.4.0.tgz#bb73d446da2796106efcc1b601a253d6c46bd087"
1881 |
1882 | statuses@~1.3.1:
1883 | version "1.3.1"
1884 | resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.3.1.tgz#faf51b9eb74aaef3b3acf4ad5f61abf24cb7b93e"
1885 |
1886 | stream-combiner@~0.0.4:
1887 | version "0.0.4"
1888 | resolved "https://registry.yarnpkg.com/stream-combiner/-/stream-combiner-0.0.4.tgz#4d5e433c185261dde623ca3f44c586bcf5c4ad14"
1889 | dependencies:
1890 | duplexer "~0.1.1"
1891 |
1892 | string-width@^1.0.1, string-width@^1.0.2:
1893 | version "1.0.2"
1894 | resolved "https://registry.yarnpkg.com/string-width/-/string-width-1.0.2.tgz#118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3"
1895 | dependencies:
1896 | code-point-at "^1.0.0"
1897 | is-fullwidth-code-point "^1.0.0"
1898 | strip-ansi "^3.0.0"
1899 |
1900 | string-width@^2.0.0, string-width@^2.1.1:
1901 | version "2.1.1"
1902 | resolved "https://registry.yarnpkg.com/string-width/-/string-width-2.1.1.tgz#ab93f27a8dc13d28cac815c462143a6d9012ae9e"
1903 | dependencies:
1904 | is-fullwidth-code-point "^2.0.0"
1905 | strip-ansi "^4.0.0"
1906 |
1907 | string_decoder@~1.0.0, string_decoder@~1.0.3:
1908 | version "1.0.3"
1909 | resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.0.3.tgz#0fc67d7c141825de94282dd536bec6b9bce860ab"
1910 | dependencies:
1911 | safe-buffer "~5.1.0"
1912 |
1913 | stringstream@~0.0.4:
1914 | version "0.0.5"
1915 | resolved "https://registry.yarnpkg.com/stringstream/-/stringstream-0.0.5.tgz#4e484cd4de5a0bbbee18e46307710a8a81621878"
1916 |
1917 | strip-ansi@^0.3.0:
1918 | version "0.3.0"
1919 | resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-0.3.0.tgz#25f48ea22ca79187f3174a4db8759347bb126220"
1920 | dependencies:
1921 | ansi-regex "^0.2.1"
1922 |
1923 | strip-ansi@^3.0.0, strip-ansi@^3.0.1:
1924 | version "3.0.1"
1925 | resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf"
1926 | dependencies:
1927 | ansi-regex "^2.0.0"
1928 |
1929 | strip-ansi@^4.0.0:
1930 | version "4.0.0"
1931 | resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-4.0.0.tgz#a8479022eb1ac368a871389b635262c505ee368f"
1932 | dependencies:
1933 | ansi-regex "^3.0.0"
1934 |
1935 | strip-eof@^1.0.0:
1936 | version "1.0.0"
1937 | resolved "https://registry.yarnpkg.com/strip-eof/-/strip-eof-1.0.0.tgz#bb43ff5598a6eb05d89b59fcd129c983313606bf"
1938 |
1939 | strip-json-comments@~2.0.1:
1940 | version "2.0.1"
1941 | resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a"
1942 |
1943 | supports-color@^0.2.0:
1944 | version "0.2.0"
1945 | resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-0.2.0.tgz#d92de2694eb3f67323973d7ae3d8b55b4c22190a"
1946 |
1947 | supports-color@^3.2.3:
1948 | version "3.2.3"
1949 | resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-3.2.3.tgz#65ac0504b3954171d8a64946b2ae3cbb8a5f54f6"
1950 | dependencies:
1951 | has-flag "^1.0.0"
1952 |
1953 | supports-color@^4.0.0:
1954 | version "4.5.0"
1955 | resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-4.5.0.tgz#be7a0de484dec5c5cddf8b3d59125044912f635b"
1956 | dependencies:
1957 | has-flag "^2.0.0"
1958 |
1959 | tar-pack@^3.4.0:
1960 | version "3.4.1"
1961 | resolved "https://registry.yarnpkg.com/tar-pack/-/tar-pack-3.4.1.tgz#e1dbc03a9b9d3ba07e896ad027317eb679a10a1f"
1962 | dependencies:
1963 | debug "^2.2.0"
1964 | fstream "^1.0.10"
1965 | fstream-ignore "^1.0.5"
1966 | once "^1.3.3"
1967 | readable-stream "^2.1.4"
1968 | rimraf "^2.5.1"
1969 | tar "^2.2.1"
1970 | uid-number "^0.0.6"
1971 |
1972 | tar@^2.2.1:
1973 | version "2.2.1"
1974 | resolved "https://registry.yarnpkg.com/tar/-/tar-2.2.1.tgz#8e4d2a256c0e2185c6b18ad694aec968b83cb1d1"
1975 | dependencies:
1976 | block-stream "*"
1977 | fstream "^1.0.2"
1978 | inherits "2"
1979 |
1980 | term-size@^1.2.0:
1981 | version "1.2.0"
1982 | resolved "https://registry.yarnpkg.com/term-size/-/term-size-1.2.0.tgz#458b83887f288fc56d6fffbfad262e26638efa69"
1983 | dependencies:
1984 | execa "^0.7.0"
1985 |
1986 | terraformer-wkt-parser@^1.1.2:
1987 | version "1.1.2"
1988 | resolved "https://registry.yarnpkg.com/terraformer-wkt-parser/-/terraformer-wkt-parser-1.1.2.tgz#336a0c8fc82094a5aff83288f69aedecd369bf0c"
1989 | dependencies:
1990 | terraformer "~1.0.5"
1991 |
1992 | terraformer@~1.0.5:
1993 | version "1.0.8"
1994 | resolved "https://registry.yarnpkg.com/terraformer/-/terraformer-1.0.8.tgz#51e0ad89746fcf2161dc6f65aa70e42377c8b593"
1995 | dependencies:
1996 | "@types/geojson" "^1.0.0"
1997 |
1998 | through@2, through@~2.3, through@~2.3.1:
1999 | version "2.3.8"
2000 | resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5"
2001 |
2002 | timed-out@^4.0.0:
2003 | version "4.0.1"
2004 | resolved "https://registry.yarnpkg.com/timed-out/-/timed-out-4.0.1.tgz#f32eacac5a175bea25d7fab565ab3ed8741ef56f"
2005 |
2006 | to-array@0.1.4:
2007 | version "0.1.4"
2008 | resolved "https://registry.yarnpkg.com/to-array/-/to-array-0.1.4.tgz#17e6c11f73dd4f3d74cda7a4ff3238e9ad9bf890"
2009 |
2010 | toposort-class@^1.0.1:
2011 | version "1.0.1"
2012 | resolved "https://registry.yarnpkg.com/toposort-class/-/toposort-class-1.0.1.tgz#7ffd1f78c8be28c3ba45cd4e1a3f5ee193bd9988"
2013 |
2014 | touch@^3.1.0:
2015 | version "3.1.0"
2016 | resolved "https://registry.yarnpkg.com/touch/-/touch-3.1.0.tgz#fe365f5f75ec9ed4e56825e0bb76d24ab74af83b"
2017 | dependencies:
2018 | nopt "~1.0.10"
2019 |
2020 | tough-cookie@~2.3.0:
2021 | version "2.3.3"
2022 | resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.3.3.tgz#0b618a5565b6dea90bf3425d04d55edc475a7561"
2023 | dependencies:
2024 | punycode "^1.4.1"
2025 |
2026 | tree-kill@^1.1.0:
2027 | version "1.2.0"
2028 | resolved "https://registry.yarnpkg.com/tree-kill/-/tree-kill-1.2.0.tgz#5846786237b4239014f05db156b643212d4c6f36"
2029 |
2030 | tunnel-agent@^0.6.0:
2031 | version "0.6.0"
2032 | resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.6.0.tgz#27a5dea06b36b04a0a9966774b290868f0fc40fd"
2033 | dependencies:
2034 | safe-buffer "^5.0.1"
2035 |
2036 | tweetnacl@^0.14.3, tweetnacl@~0.14.0:
2037 | version "0.14.5"
2038 | resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-0.14.5.tgz#5ae68177f192d4456269d108afa93ff8743f4f64"
2039 |
2040 | type-is@~1.6.15:
2041 | version "1.6.15"
2042 | resolved "https://registry.yarnpkg.com/type-is/-/type-is-1.6.15.tgz#cab10fb4909e441c82842eafe1ad646c81804410"
2043 | dependencies:
2044 | media-typer "0.3.0"
2045 | mime-types "~2.1.15"
2046 |
2047 | uid-number@^0.0.6:
2048 | version "0.0.6"
2049 | resolved "https://registry.yarnpkg.com/uid-number/-/uid-number-0.0.6.tgz#0ea10e8035e8eb5b8e4449f06da1c730663baa81"
2050 |
2051 | ultron@~1.1.0:
2052 | version "1.1.1"
2053 | resolved "https://registry.yarnpkg.com/ultron/-/ultron-1.1.1.tgz#9fe1536a10a664a65266a1e3ccf85fd36302bc9c"
2054 |
2055 | undefsafe@0.0.3:
2056 | version "0.0.3"
2057 | resolved "https://registry.yarnpkg.com/undefsafe/-/undefsafe-0.0.3.tgz#ecca3a03e56b9af17385baac812ac83b994a962f"
2058 |
2059 | unique-string@^1.0.0:
2060 | version "1.0.0"
2061 | resolved "https://registry.yarnpkg.com/unique-string/-/unique-string-1.0.0.tgz#9e1057cca851abb93398f8b33ae187b99caec11a"
2062 | dependencies:
2063 | crypto-random-string "^1.0.0"
2064 |
2065 | unpipe@1.0.0, unpipe@~1.0.0:
2066 | version "1.0.0"
2067 | resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec"
2068 |
2069 | unzip-response@^2.0.1:
2070 | version "2.0.1"
2071 | resolved "https://registry.yarnpkg.com/unzip-response/-/unzip-response-2.0.1.tgz#d2f0f737d16b0615e72a6935ed04214572d56f97"
2072 |
2073 | update-notifier@^2.2.0:
2074 | version "2.3.0"
2075 | resolved "https://registry.yarnpkg.com/update-notifier/-/update-notifier-2.3.0.tgz#4e8827a6bb915140ab093559d7014e3ebb837451"
2076 | dependencies:
2077 | boxen "^1.2.1"
2078 | chalk "^2.0.1"
2079 | configstore "^3.0.0"
2080 | import-lazy "^2.1.0"
2081 | is-installed-globally "^0.1.0"
2082 | is-npm "^1.0.0"
2083 | latest-version "^3.0.0"
2084 | semver-diff "^2.0.0"
2085 | xdg-basedir "^3.0.0"
2086 |
2087 | url-parse-lax@^1.0.0:
2088 | version "1.0.0"
2089 | resolved "https://registry.yarnpkg.com/url-parse-lax/-/url-parse-lax-1.0.0.tgz#7af8f303645e9bd79a272e7a14ac68bc0609da73"
2090 | dependencies:
2091 | prepend-http "^1.0.1"
2092 |
2093 | util-deprecate@~1.0.1:
2094 | version "1.0.2"
2095 | resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf"
2096 |
2097 | utils-merge@1.0.1:
2098 | version "1.0.1"
2099 | resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.1.tgz#9f95710f50a267947b2ccc124741c1028427e713"
2100 |
2101 | uuid@^3.0.0:
2102 | version "3.1.0"
2103 | resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.1.0.tgz#3dd3d3e790abc24d7b0d3a034ffababe28ebbc04"
2104 |
2105 | uws@~0.14.4:
2106 | version "0.14.5"
2107 | resolved "https://registry.yarnpkg.com/uws/-/uws-0.14.5.tgz#67aaf33c46b2a587a5f6666d00f7691328f149dc"
2108 |
2109 | validator@^9.1.0:
2110 | version "9.1.2"
2111 | resolved "https://registry.yarnpkg.com/validator/-/validator-9.1.2.tgz#5711b6413f78bd9d56003130c81b47c39e86546c"
2112 |
2113 | vary@~1.1.2:
2114 | version "1.1.2"
2115 | resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc"
2116 |
2117 | verror@1.10.0:
2118 | version "1.10.0"
2119 | resolved "https://registry.yarnpkg.com/verror/-/verror-1.10.0.tgz#3a105ca17053af55d6e270c1f8288682e18da400"
2120 | dependencies:
2121 | assert-plus "^1.0.0"
2122 | core-util-is "1.0.2"
2123 | extsprintf "^1.2.0"
2124 |
2125 | which@^1.2.9:
2126 | version "1.3.0"
2127 | resolved "https://registry.yarnpkg.com/which/-/which-1.3.0.tgz#ff04bdfc010ee547d780bec38e1ac1c2777d253a"
2128 | dependencies:
2129 | isexe "^2.0.0"
2130 |
2131 | wide-align@^1.1.0:
2132 | version "1.1.2"
2133 | resolved "https://registry.yarnpkg.com/wide-align/-/wide-align-1.1.2.tgz#571e0f1b0604636ebc0dfc21b0339bbe31341710"
2134 | dependencies:
2135 | string-width "^1.0.2"
2136 |
2137 | widest-line@^2.0.0:
2138 | version "2.0.0"
2139 | resolved "https://registry.yarnpkg.com/widest-line/-/widest-line-2.0.0.tgz#0142a4e8a243f8882c0233aa0e0281aa76152273"
2140 | dependencies:
2141 | string-width "^2.1.1"
2142 |
2143 | wkx@^0.4.1:
2144 | version "0.4.2"
2145 | resolved "https://registry.yarnpkg.com/wkx/-/wkx-0.4.2.tgz#776d35a634a5c22e656e4744bdeb54f83fd2ce8d"
2146 | dependencies:
2147 | "@types/node" "*"
2148 |
2149 | wrappy@1:
2150 | version "1.0.2"
2151 | resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f"
2152 |
2153 | write-file-atomic@^2.0.0:
2154 | version "2.3.0"
2155 | resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-2.3.0.tgz#1ff61575c2e2a4e8e510d6fa4e243cce183999ab"
2156 | dependencies:
2157 | graceful-fs "^4.1.11"
2158 | imurmurhash "^0.1.4"
2159 | signal-exit "^3.0.2"
2160 |
2161 | ws@~3.3.1:
2162 | version "3.3.2"
2163 | resolved "https://registry.yarnpkg.com/ws/-/ws-3.3.2.tgz#96c1d08b3fefda1d5c1e33700d3bfaa9be2d5608"
2164 | dependencies:
2165 | async-limiter "~1.0.0"
2166 | safe-buffer "~5.1.0"
2167 | ultron "~1.1.0"
2168 |
2169 | xdg-basedir@^3.0.0:
2170 | version "3.0.0"
2171 | resolved "https://registry.yarnpkg.com/xdg-basedir/-/xdg-basedir-3.0.0.tgz#496b2cc109eca8dbacfe2dc72b603c17c5870ad4"
2172 |
2173 | xmlhttprequest-ssl@~1.5.4:
2174 | version "1.5.4"
2175 | resolved "https://registry.yarnpkg.com/xmlhttprequest-ssl/-/xmlhttprequest-ssl-1.5.4.tgz#04f560915724b389088715cc0ed7813e9677bf57"
2176 |
2177 | yallist@^2.1.2:
2178 | version "2.1.2"
2179 | resolved "https://registry.yarnpkg.com/yallist/-/yallist-2.1.2.tgz#1c11f9218f076089a47dd512f93c6699a6a81d52"
2180 |
2181 | yeast@0.1.2:
2182 | version "0.1.2"
2183 | resolved "https://registry.yarnpkg.com/yeast/-/yeast-0.1.2.tgz#008e06d8094320c372dbc2f8ed76a0ca6c8ac419"
2184 |
--------------------------------------------------------------------------------