├── .gitignore
├── README.md
├── diagrams
├── 01
│ └── diagrams.xml
├── 02
│ ├── .gitkeep
│ └── diagrams.xml
├── 03
│ ├── .DS_Store
│ ├── .gitkeep
│ └── diagrams.xml
├── 04
│ ├── .gitkeep
│ └── diagrams.xml
├── 05
│ ├── .DS_Store
│ ├── .gitkeep
│ └── diagrams.xml
├── 06
│ ├── .DS_Store
│ ├── .gitkeep
│ └── diagrams.xml
├── 07
│ ├── .gitkeep
│ └── diagrams.xml
└── README.md
└── server
├── .gitignore
├── client
├── .env.development
├── .env.production
├── .gitignore
├── README.md
├── package-lock.json
├── package.json
├── public
│ ├── favicon.ico
│ ├── index.html
│ └── manifest.json
├── src
│ ├── actions
│ │ ├── index.js
│ │ └── types.js
│ ├── components
│ │ ├── App.js
│ │ ├── Dashboard.js
│ │ ├── Header.js
│ │ ├── Landing.js
│ │ ├── Payments.js
│ │ └── surveys
│ │ │ ├── SurveyField.js
│ │ │ ├── SurveyForm.js
│ │ │ ├── SurveyFormReview.js
│ │ │ ├── SurveyList.js
│ │ │ ├── SurveyNew.js
│ │ │ └── formFields.js
│ ├── index.js
│ ├── reducers
│ │ ├── authReducer.js
│ │ ├── index.js
│ │ └── surveysReducer.js
│ ├── registerServiceWorker.js
│ └── utils
│ │ └── validateEmails.js
└── yarn.lock
├── config
├── keys.js
└── prod.js
├── index.js
├── middlewares
├── requireCredits.js
└── requireLogin.js
├── models
├── Recipient.js
├── Survey.js
└── User.js
├── node_modules
├── .bin
│ └── mime
├── accepts
│ ├── HISTORY.md
│ ├── LICENSE
│ ├── README.md
│ ├── index.js
│ └── package.json
├── array-flatten
│ ├── LICENSE
│ ├── README.md
│ ├── array-flatten.js
│ └── package.json
├── content-disposition
│ ├── HISTORY.md
│ ├── LICENSE
│ ├── README.md
│ ├── index.js
│ └── package.json
├── content-type
│ ├── HISTORY.md
│ ├── LICENSE
│ ├── README.md
│ ├── index.js
│ └── package.json
├── cookie-signature
│ ├── .npmignore
│ ├── History.md
│ ├── Readme.md
│ ├── index.js
│ └── package.json
├── cookie
│ ├── HISTORY.md
│ ├── LICENSE
│ ├── README.md
│ ├── index.js
│ └── package.json
├── debug
│ ├── .coveralls.yml
│ ├── .eslintrc
│ ├── .npmignore
│ ├── .travis.yml
│ ├── CHANGELOG.md
│ ├── LICENSE
│ ├── Makefile
│ ├── README.md
│ ├── component.json
│ ├── karma.conf.js
│ ├── node.js
│ ├── package.json
│ └── src
│ │ ├── browser.js
│ │ ├── debug.js
│ │ ├── index.js
│ │ └── node.js
├── depd
│ ├── History.md
│ ├── LICENSE
│ ├── Readme.md
│ ├── index.js
│ ├── lib
│ │ ├── browser
│ │ │ └── index.js
│ │ └── compat
│ │ │ ├── buffer-concat.js
│ │ │ ├── callsite-tostring.js
│ │ │ ├── event-listener-count.js
│ │ │ └── index.js
│ └── package.json
├── destroy
│ ├── LICENSE
│ ├── README.md
│ ├── index.js
│ └── package.json
├── ee-first
│ ├── LICENSE
│ ├── README.md
│ ├── index.js
│ └── package.json
├── encodeurl
│ ├── HISTORY.md
│ ├── LICENSE
│ ├── README.md
│ ├── index.js
│ └── package.json
├── escape-html
│ ├── LICENSE
│ ├── Readme.md
│ ├── index.js
│ └── package.json
├── etag
│ ├── HISTORY.md
│ ├── LICENSE
│ ├── README.md
│ ├── index.js
│ └── package.json
├── express
│ ├── History.md
│ ├── LICENSE
│ ├── Readme.md
│ ├── index.js
│ ├── lib
│ │ ├── application.js
│ │ ├── express.js
│ │ ├── middleware
│ │ │ ├── init.js
│ │ │ └── query.js
│ │ ├── request.js
│ │ ├── response.js
│ │ ├── router
│ │ │ ├── index.js
│ │ │ ├── layer.js
│ │ │ └── route.js
│ │ ├── utils.js
│ │ └── view.js
│ └── package.json
├── finalhandler
│ ├── HISTORY.md
│ ├── LICENSE
│ ├── README.md
│ ├── index.js
│ └── package.json
├── forwarded
│ ├── HISTORY.md
│ ├── LICENSE
│ ├── README.md
│ ├── index.js
│ └── package.json
├── fresh
│ ├── HISTORY.md
│ ├── LICENSE
│ ├── README.md
│ ├── index.js
│ └── package.json
├── http-errors
│ ├── HISTORY.md
│ ├── LICENSE
│ ├── README.md
│ ├── index.js
│ └── package.json
├── inherits
│ ├── LICENSE
│ ├── README.md
│ ├── inherits.js
│ ├── inherits_browser.js
│ └── package.json
├── ipaddr.js
│ ├── .npmignore
│ ├── .travis.yml
│ ├── Cakefile
│ ├── LICENSE
│ ├── README.md
│ ├── bower.json
│ ├── ipaddr.min.js
│ ├── lib
│ │ └── ipaddr.js
│ ├── package.json
│ ├── src
│ │ └── ipaddr.coffee
│ └── test
│ │ └── ipaddr.test.coffee
├── media-typer
│ ├── HISTORY.md
│ ├── LICENSE
│ ├── README.md
│ ├── index.js
│ └── package.json
├── merge-descriptors
│ ├── HISTORY.md
│ ├── LICENSE
│ ├── README.md
│ ├── index.js
│ └── package.json
├── methods
│ ├── HISTORY.md
│ ├── LICENSE
│ ├── README.md
│ ├── index.js
│ └── package.json
├── mime-db
│ ├── HISTORY.md
│ ├── LICENSE
│ ├── README.md
│ ├── db.json
│ ├── index.js
│ └── package.json
├── mime-types
│ ├── HISTORY.md
│ ├── LICENSE
│ ├── README.md
│ ├── index.js
│ └── package.json
├── mime
│ ├── .npmignore
│ ├── LICENSE
│ ├── README.md
│ ├── build
│ │ ├── build.js
│ │ └── test.js
│ ├── cli.js
│ ├── mime.js
│ ├── package.json
│ └── types.json
├── ms
│ ├── index.js
│ ├── license.md
│ ├── package.json
│ └── readme.md
├── negotiator
│ ├── HISTORY.md
│ ├── LICENSE
│ ├── README.md
│ ├── index.js
│ ├── lib
│ │ ├── charset.js
│ │ ├── encoding.js
│ │ ├── language.js
│ │ └── mediaType.js
│ └── package.json
├── on-finished
│ ├── HISTORY.md
│ ├── LICENSE
│ ├── README.md
│ ├── index.js
│ └── package.json
├── parseurl
│ ├── HISTORY.md
│ ├── LICENSE
│ ├── README.md
│ ├── index.js
│ └── package.json
├── path-to-regexp
│ ├── History.md
│ ├── LICENSE
│ ├── Readme.md
│ ├── index.js
│ └── package.json
├── proxy-addr
│ ├── HISTORY.md
│ ├── LICENSE
│ ├── README.md
│ ├── index.js
│ └── package.json
├── qs
│ ├── .eslintignore
│ ├── .eslintrc
│ ├── .jscs.json
│ ├── CHANGELOG.md
│ ├── LICENSE
│ ├── README.md
│ ├── dist
│ │ └── qs.js
│ ├── lib
│ │ ├── formats.js
│ │ ├── index.js
│ │ ├── parse.js
│ │ ├── stringify.js
│ │ └── utils.js
│ ├── package.json
│ └── test
│ │ ├── .eslintrc
│ │ ├── index.js
│ │ ├── parse.js
│ │ ├── stringify.js
│ │ └── utils.js
├── range-parser
│ ├── HISTORY.md
│ ├── LICENSE
│ ├── README.md
│ ├── index.js
│ └── package.json
├── send
│ ├── HISTORY.md
│ ├── LICENSE
│ ├── README.md
│ ├── index.js
│ └── package.json
├── serve-static
│ ├── HISTORY.md
│ ├── LICENSE
│ ├── README.md
│ ├── index.js
│ └── package.json
├── setprototypeof
│ ├── LICENSE
│ ├── README.md
│ ├── index.js
│ └── package.json
├── statuses
│ ├── HISTORY.md
│ ├── LICENSE
│ ├── README.md
│ ├── codes.json
│ ├── index.js
│ └── package.json
├── type-is
│ ├── HISTORY.md
│ ├── LICENSE
│ ├── README.md
│ ├── index.js
│ └── package.json
├── unpipe
│ ├── HISTORY.md
│ ├── LICENSE
│ ├── README.md
│ ├── index.js
│ └── package.json
├── utils-merge
│ ├── .travis.yml
│ ├── LICENSE
│ ├── README.md
│ ├── index.js
│ └── package.json
└── vary
│ ├── HISTORY.md
│ ├── LICENSE
│ ├── README.md
│ ├── index.js
│ └── package.json
├── package-lock.json
├── package.json
├── routes
├── authRoutes.js
├── billingRoutes.js
└── surveyRoutes.js
├── sendgrid_webhook.sh
└── services
├── Mailer.js
├── emailTemplates
└── surveyTemplate.js
└── passport.js
/.gitignore:
--------------------------------------------------------------------------------
1 | .DS_Store
2 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # FullstackReactCode
2 |
3 | Companion repo to a course on Udemy.com. See here: https://www.udemy.com/node-with-react-fullstack-web-development
4 |
--------------------------------------------------------------------------------
/diagrams/02/.gitkeep:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/StephenGrider/FullstackReactCode/380e5c9b2f06383315217214614c19eb76022b94/diagrams/02/.gitkeep
--------------------------------------------------------------------------------
/diagrams/03/.DS_Store:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/StephenGrider/FullstackReactCode/380e5c9b2f06383315217214614c19eb76022b94/diagrams/03/.DS_Store
--------------------------------------------------------------------------------
/diagrams/03/.gitkeep:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/StephenGrider/FullstackReactCode/380e5c9b2f06383315217214614c19eb76022b94/diagrams/03/.gitkeep
--------------------------------------------------------------------------------
/diagrams/04/.gitkeep:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/StephenGrider/FullstackReactCode/380e5c9b2f06383315217214614c19eb76022b94/diagrams/04/.gitkeep
--------------------------------------------------------------------------------
/diagrams/05/.DS_Store:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/StephenGrider/FullstackReactCode/380e5c9b2f06383315217214614c19eb76022b94/diagrams/05/.DS_Store
--------------------------------------------------------------------------------
/diagrams/05/.gitkeep:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/StephenGrider/FullstackReactCode/380e5c9b2f06383315217214614c19eb76022b94/diagrams/05/.gitkeep
--------------------------------------------------------------------------------
/diagrams/06/.DS_Store:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/StephenGrider/FullstackReactCode/380e5c9b2f06383315217214614c19eb76022b94/diagrams/06/.DS_Store
--------------------------------------------------------------------------------
/diagrams/06/.gitkeep:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/StephenGrider/FullstackReactCode/380e5c9b2f06383315217214614c19eb76022b94/diagrams/06/.gitkeep
--------------------------------------------------------------------------------
/diagrams/07/.gitkeep:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/diagrams/README.md:
--------------------------------------------------------------------------------
1 | Course Diagrams
2 |
--------------------------------------------------------------------------------
/server/.gitignore:
--------------------------------------------------------------------------------
1 | node_modules
2 | dev.js
3 |
--------------------------------------------------------------------------------
/server/client/.env.development:
--------------------------------------------------------------------------------
1 | REACT_APP_STRIPE_KEY=pk_test_dKZxavK0k1eMgsN9MFM9oPBh
2 |
--------------------------------------------------------------------------------
/server/client/.env.production:
--------------------------------------------------------------------------------
1 | REACT_APP_STRIPE_KEY=pk_test_dKZxavK0k1eMgsN9MFM9oPBh
2 |
--------------------------------------------------------------------------------
/server/client/.gitignore:
--------------------------------------------------------------------------------
1 | # See https://help.github.com/ignore-files/ for more about ignoring files.
2 |
3 | # dependencies
4 | /node_modules
5 |
6 | # testing
7 | /coverage
8 |
9 | # production
10 | /build
11 |
12 | # misc
13 | .DS_Store
14 | .env.local
15 | .env.development.local
16 | .env.test.local
17 | .env.production.local
18 |
19 | npm-debug.log*
20 | yarn-debug.log*
21 | yarn-error.log*
22 |
--------------------------------------------------------------------------------
/server/client/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "client",
3 | "version": "0.1.0",
4 | "private": true,
5 | "proxy": {
6 | "/auth/google": {
7 | "target": "http://localhost:5000"
8 | },
9 | "/api/*": {
10 | "target": "http://localhost:5000"
11 | }
12 | },
13 | "dependencies": {
14 | "axios": "^0.16.2",
15 | "materialize-css": "^0.99.0",
16 | "react": "^16.0.0-alpha.13",
17 | "react-dom": "^16.0.0-alpha.13",
18 | "react-redux": "^5.0.5",
19 | "react-router-dom": "^4.1.1",
20 | "react-scripts": "1.0.10",
21 | "react-stripe-checkout": "^2.4.0",
22 | "redux": "^3.7.1",
23 | "redux-form": "^7.0.1",
24 | "redux-thunk": "^2.2.0"
25 | },
26 | "scripts": {
27 | "start": "react-scripts start",
28 | "build": "react-scripts build",
29 | "test": "react-scripts test --env=jsdom",
30 | "eject": "react-scripts eject"
31 | }
32 | }
33 |
--------------------------------------------------------------------------------
/server/client/public/favicon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/StephenGrider/FullstackReactCode/380e5c9b2f06383315217214614c19eb76022b94/server/client/public/favicon.ico
--------------------------------------------------------------------------------
/server/client/public/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
11 |
12 |
13 |
14 |
23 | React App
24 |
25 |
26 |
29 |
30 |
40 |
41 |
42 |
--------------------------------------------------------------------------------
/server/client/public/manifest.json:
--------------------------------------------------------------------------------
1 | {
2 | "short_name": "React App",
3 | "name": "Create React App Sample",
4 | "icons": [
5 | {
6 | "src": "favicon.ico",
7 | "sizes": "192x192",
8 | "type": "image/png"
9 | }
10 | ],
11 | "start_url": "./index.html",
12 | "display": "standalone",
13 | "theme_color": "#000000",
14 | "background_color": "#ffffff"
15 | }
16 |
--------------------------------------------------------------------------------
/server/client/src/actions/index.js:
--------------------------------------------------------------------------------
1 | import axios from 'axios';
2 | import { FETCH_USER, FETCH_SURVEYS } from './types';
3 |
4 | export const fetchUser = () => async dispatch => {
5 | const res = await axios.get('/api/current_user');
6 |
7 | dispatch({ type: FETCH_USER, payload: res.data });
8 | };
9 |
10 | export const handleToken = token => async dispatch => {
11 | const res = await axios.post('/api/stripe', token);
12 |
13 | dispatch({ type: FETCH_USER, payload: res.data });
14 | };
15 |
16 | export const submitSurvey = (values, history) => async dispatch => {
17 | const res = await axios.post('/api/surveys', values);
18 |
19 | history.push('/surveys');
20 | dispatch({ type: FETCH_USER, payload: res.data });
21 | };
22 |
23 | export const fetchSurveys = () => async dispatch => {
24 | const res = await axios.get('/api/surveys');
25 |
26 | dispatch({ type: FETCH_SURVEYS, payload: res.data });
27 | };
28 |
--------------------------------------------------------------------------------
/server/client/src/actions/types.js:
--------------------------------------------------------------------------------
1 | export const FETCH_USER = 'fetch_user';
2 | export const FETCH_SURVEYS = 'fetch_surveys';
3 |
--------------------------------------------------------------------------------
/server/client/src/components/App.js:
--------------------------------------------------------------------------------
1 | import React, { Component } from 'react';
2 | import { BrowserRouter, Route } from 'react-router-dom';
3 | import { connect } from 'react-redux';
4 | import * as actions from '../actions';
5 |
6 | import Header from './Header';
7 | import Landing from './Landing';
8 | import Dashboard from './Dashboard';
9 | import SurveyNew from './surveys/SurveyNew';
10 |
11 | class App extends Component {
12 | componentDidMount() {
13 | this.props.fetchUser();
14 | }
15 |
16 | render() {
17 | return (
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 | );
29 | }
30 | }
31 |
32 | export default connect(null, actions)(App);
33 |
--------------------------------------------------------------------------------
/server/client/src/components/Dashboard.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import { Link } from 'react-router-dom';
3 | import SurveyList from './surveys/SurveyList';
4 |
5 | const Dashboard = () => {
6 | return (
7 |
8 |
9 |
10 |
11 | add
12 |
13 |
14 |
15 | );
16 | };
17 |
18 | export default Dashboard;
19 |
--------------------------------------------------------------------------------
/server/client/src/components/Header.js:
--------------------------------------------------------------------------------
1 | import React, { Component } from 'react';
2 | import { connect } from 'react-redux';
3 | import { Link } from 'react-router-dom';
4 | import Payments from './Payments';
5 |
6 | class Header extends Component {
7 | renderContent() {
8 | switch (this.props.auth) {
9 | case null:
10 | return;
11 | case false:
12 | return Login With Google;
13 | default:
14 | return [
15 | ,
16 |
17 | Credits: {this.props.auth.credits}
18 | ,
19 | Logout
20 | ];
21 | }
22 | }
23 |
24 | render() {
25 | return (
26 |
39 | );
40 | }
41 | }
42 |
43 | function mapStateToProps({ auth }) {
44 | return { auth };
45 | }
46 |
47 | export default connect(mapStateToProps)(Header);
48 |
--------------------------------------------------------------------------------
/server/client/src/components/Landing.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 |
3 | const Landing = () => {
4 | return (
5 |
6 |
7 | Emaily!
8 |
9 | Collect feedback form your users
10 |
11 | );
12 | };
13 |
14 | export default Landing;
15 |
--------------------------------------------------------------------------------
/server/client/src/components/Payments.js:
--------------------------------------------------------------------------------
1 | import React, { Component } from 'react';
2 | import StripeCheckout from 'react-stripe-checkout';
3 | import { connect } from 'react-redux';
4 | import * as actions from '../actions';
5 |
6 | class Payments extends Component {
7 | render() {
8 | return (
9 | this.props.handleToken(token)}
14 | stripeKey={process.env.REACT_APP_STRIPE_KEY}
15 | >
16 |
19 |
20 | );
21 | }
22 | }
23 |
24 | export default connect(null, actions)(Payments);
25 |
--------------------------------------------------------------------------------
/server/client/src/components/surveys/SurveyField.js:
--------------------------------------------------------------------------------
1 | // SurveyField contains logic to render a single
2 | // label and text input
3 | import React from 'react';
4 |
5 | export default ({ input, label, meta: { error, touched } }) => {
6 | return (
7 |
8 |
9 |
10 |
11 | {touched && error}
12 |
13 |
14 | );
15 | };
16 |
--------------------------------------------------------------------------------
/server/client/src/components/surveys/SurveyForm.js:
--------------------------------------------------------------------------------
1 | // SurveyForm shows a form for a user to add input
2 | import _ from 'lodash';
3 | import React, { Component } from 'react';
4 | import { reduxForm, Field } from 'redux-form';
5 | import { Link } from 'react-router-dom';
6 | import SurveyField from './SurveyField';
7 | import validateEmails from '../../utils/validateEmails';
8 | import formFields from './formFields';
9 |
10 | class SurveyForm extends Component {
11 | renderFields() {
12 | return _.map(formFields, ({ label, name }) => {
13 | return (
14 |
21 | );
22 | });
23 | }
24 |
25 | render() {
26 | return (
27 |
28 |
38 |
39 | );
40 | }
41 | }
42 |
43 | function validate(values) {
44 | const errors = {};
45 |
46 | errors.recipients = validateEmails(values.recipients || '');
47 |
48 | _.each(formFields, ({ name }) => {
49 | if (!values[name]) {
50 | errors[name] = 'You must provide a value';
51 | }
52 | });
53 |
54 | return errors;
55 | }
56 |
57 | export default reduxForm({
58 | validate,
59 | form: 'surveyForm',
60 | destroyOnUnmount: false
61 | })(SurveyForm);
62 |
--------------------------------------------------------------------------------
/server/client/src/components/surveys/SurveyFormReview.js:
--------------------------------------------------------------------------------
1 | // SurveyFormReview shows users their form inputs for review
2 | import _ from 'lodash';
3 | import React from 'react';
4 | import { connect } from 'react-redux';
5 | import formFields from './formFields';
6 | import { withRouter } from 'react-router-dom';
7 | import * as actions from '../../actions';
8 |
9 | const SurveyFormReview = ({ onCancel, formValues, submitSurvey, history }) => {
10 | const reviewFields = _.map(formFields, ({ name, label }) => {
11 | return (
12 |
13 |
14 |
15 | {formValues[name]}
16 |
17 |
18 | );
19 | });
20 |
21 | return (
22 |
23 |
Please confirm your entries
24 | {reviewFields}
25 |
31 |
38 |
39 | );
40 | };
41 |
42 | function mapStateToProps(state) {
43 | return { formValues: state.form.surveyForm.values };
44 | }
45 |
46 | export default connect(mapStateToProps, actions)(withRouter(SurveyFormReview));
47 |
--------------------------------------------------------------------------------
/server/client/src/components/surveys/SurveyList.js:
--------------------------------------------------------------------------------
1 | import React, { Component } from 'react';
2 | import { connect } from 'react-redux';
3 | import { fetchSurveys } from '../../actions';
4 |
5 | class SurveyList extends Component {
6 | componentDidMount() {
7 | this.props.fetchSurveys();
8 | }
9 |
10 | renderSurveys() {
11 | return this.props.surveys.reverse().map(survey => {
12 | return (
13 |
14 |
15 |
{survey.title}
16 |
17 | {survey.body}
18 |
19 |
20 | Sent On: {new Date(survey.dateSent).toLocaleDateString()}
21 |
22 |
23 |
27 |
28 | );
29 | });
30 | }
31 |
32 | render() {
33 | return (
34 |
35 | {this.renderSurveys()}
36 |
37 | );
38 | }
39 | }
40 |
41 | function mapStateToProps({ surveys }) {
42 | return { surveys };
43 | }
44 |
45 | export default connect(mapStateToProps, { fetchSurveys })(SurveyList);
46 |
--------------------------------------------------------------------------------
/server/client/src/components/surveys/SurveyNew.js:
--------------------------------------------------------------------------------
1 | // SurveyNew shows SurveyForm and SurveyFormReview
2 | import React, { Component } from 'react';
3 | import { reduxForm } from 'redux-form';
4 | import SurveyForm from './SurveyForm';
5 | import SurveyFormReview from './SurveyFormReview';
6 |
7 | class SurveyNew extends Component {
8 | state = { showFormReview: false };
9 |
10 | renderContent() {
11 | if (this.state.showFormReview) {
12 | return (
13 | this.setState({ showFormReview: false })}
15 | />
16 | );
17 | }
18 |
19 | return (
20 | this.setState({ showFormReview: true })}
22 | />
23 | );
24 | }
25 |
26 | render() {
27 | return (
28 |
29 | {this.renderContent()}
30 |
31 | );
32 | }
33 | }
34 |
35 | export default reduxForm({
36 | form: 'surveyForm'
37 | })(SurveyNew);
38 |
--------------------------------------------------------------------------------
/server/client/src/components/surveys/formFields.js:
--------------------------------------------------------------------------------
1 | export default [
2 | { label: 'Campaign Title', name: 'title' },
3 | { label: 'Subject Line', name: 'subject' },
4 | { label: 'Email Body', name: 'body' },
5 | { label: 'Recipient List', name: 'recipients' }
6 | ];
7 |
--------------------------------------------------------------------------------
/server/client/src/index.js:
--------------------------------------------------------------------------------
1 | import 'materialize-css/dist/css/materialize.min.css';
2 | import React from 'react';
3 | import ReactDOM from 'react-dom';
4 | import { Provider } from 'react-redux';
5 | import { createStore, applyMiddleware } from 'redux';
6 | import reduxThunk from 'redux-thunk';
7 |
8 | import App from './components/App';
9 | import reducers from './reducers';
10 |
11 | // Development only axios helpers!
12 | import axios from 'axios';
13 | window.axios = axios;
14 |
15 | const store = createStore(reducers, {}, applyMiddleware(reduxThunk));
16 |
17 | ReactDOM.render(
18 | ,
19 | document.querySelector('#root')
20 | );
21 |
--------------------------------------------------------------------------------
/server/client/src/reducers/authReducer.js:
--------------------------------------------------------------------------------
1 | import { FETCH_USER } from '../actions/types';
2 |
3 | export default function(state = null, action) {
4 | switch (action.type) {
5 | case FETCH_USER:
6 | return action.payload || false;
7 | default:
8 | return state;
9 | }
10 | }
11 |
--------------------------------------------------------------------------------
/server/client/src/reducers/index.js:
--------------------------------------------------------------------------------
1 | import { combineReducers } from 'redux';
2 | import { reducer as reduxForm } from 'redux-form';
3 | import authReducer from './authReducer';
4 | import surveysReducer from './surveysReducer';
5 |
6 | export default combineReducers({
7 | auth: authReducer,
8 | form: reduxForm,
9 | surveys: surveysReducer
10 | });
11 |
--------------------------------------------------------------------------------
/server/client/src/reducers/surveysReducer.js:
--------------------------------------------------------------------------------
1 | import { FETCH_SURVEYS } from '../actions/types';
2 |
3 | export default function(state = [], action) {
4 | switch (action.type) {
5 | case FETCH_SURVEYS:
6 | return action.payload;
7 | default:
8 | return state;
9 | }
10 | }
11 |
--------------------------------------------------------------------------------
/server/client/src/utils/validateEmails.js:
--------------------------------------------------------------------------------
1 | const re = /^[a-zA-Z0-9.!#$%&’*+/=?^_`{|}~-]+@[a-zA-Z0-9-]+(?:\.[a-zA-Z0-9-]+)*$/;
2 |
3 | export default emails => {
4 | const invalidEmails = emails
5 | .split(',')
6 | .map(email => email.trim())
7 | .filter(email => re.test(email) === false);
8 |
9 | if (invalidEmails.length) {
10 | return `These emails are invalid: ${invalidEmails}`;
11 | }
12 |
13 | return;
14 | };
15 |
--------------------------------------------------------------------------------
/server/config/keys.js:
--------------------------------------------------------------------------------
1 | // keys.js - figure out what set of credentials to return
2 | if (process.env.NODE_ENV === 'production') {
3 | // we are in production - return the prod set of keys
4 | module.exports = require('./prod');
5 | } else {
6 | // we are in development - return the dev keys!!!
7 | module.exports = require('./dev');
8 | }
9 |
--------------------------------------------------------------------------------
/server/config/prod.js:
--------------------------------------------------------------------------------
1 | // prod.js - production keys here!!
2 | module.exports = {
3 | googleClientID: process.env.GOOGLE_CLIENT_ID,
4 | googleClientSecret: process.env.GOOGLE_CLIENT_SECRET,
5 | mongoURI: process.env.MONGO_URI,
6 | cookieKey: process.env.COOKIE_KEY,
7 | stripePublishableKey: process.env.STRIPE_PUBLISHABLE_KEY,
8 | stripeSecretKey: process.env.STRIPE_SECRET_KEY,
9 | sendGridKey: process.env.SEND_GRID_KEY,
10 | redirectDomain: process.env.REDIRECT_DOMAIN
11 | };
12 |
--------------------------------------------------------------------------------
/server/index.js:
--------------------------------------------------------------------------------
1 | const express = require('express');
2 | const mongoose = require('mongoose');
3 | const cookieSession = require('cookie-session');
4 | const passport = require('passport');
5 | const bodyParser = require('body-parser');
6 | const keys = require('./config/keys');
7 | require('./models/User');
8 | require('./models/Survey');
9 | require('./services/passport');
10 |
11 | mongoose.Promise = global.Promise;
12 | mongoose.connect(keys.mongoURI);
13 |
14 | const app = express();
15 |
16 | app.use(bodyParser.json());
17 | app.use(
18 | cookieSession({
19 | maxAge: 30 * 24 * 60 * 60 * 1000,
20 | keys: [keys.cookieKey]
21 | })
22 | );
23 | app.use(passport.initialize());
24 | app.use(passport.session());
25 |
26 | require('./routes/authRoutes')(app);
27 | require('./routes/billingRoutes')(app);
28 | require('./routes/surveyRoutes')(app);
29 |
30 | if (process.env.NODE_ENV === 'production') {
31 | // Express will serve up production assets
32 | // like our main.js file, or main.css file!
33 | app.use(express.static('client/build'));
34 |
35 | // Express will serve up the index.html file
36 | // if it doesn't recognize the route
37 | const path = require('path');
38 | app.get('*', (req, res) => {
39 | res.sendFile(path.resolve(__dirname, 'client', 'build', 'index.html'));
40 | });
41 | }
42 |
43 | const PORT = process.env.PORT || 5000;
44 | app.listen(PORT);
45 |
--------------------------------------------------------------------------------
/server/middlewares/requireCredits.js:
--------------------------------------------------------------------------------
1 | module.exports = (req, res, next) => {
2 | if (req.user.credits < 1) {
3 | return res.status(403).send({ error: 'Not enough credits!' });
4 | }
5 |
6 | next();
7 | };
8 |
--------------------------------------------------------------------------------
/server/middlewares/requireLogin.js:
--------------------------------------------------------------------------------
1 | module.exports = (req, res, next) => {
2 | if (!req.user) {
3 | return res.status(401).send({ error: 'You must log in!' });
4 | }
5 |
6 | next();
7 | };
8 |
--------------------------------------------------------------------------------
/server/models/Recipient.js:
--------------------------------------------------------------------------------
1 | const mongoose = require('mongoose');
2 | const { Schema } = mongoose;
3 |
4 | const recipientSchema = new Schema({
5 | email: String,
6 | responded: { type: Boolean, default: false }
7 | });
8 |
9 | module.exports = recipientSchema;
10 |
--------------------------------------------------------------------------------
/server/models/Survey.js:
--------------------------------------------------------------------------------
1 | const mongoose = require('mongoose');
2 | const { Schema } = mongoose;
3 | const RecipientSchema = require('./Recipient');
4 |
5 | const surveySchema = new Schema({
6 | title: String,
7 | body: String,
8 | subject: String,
9 | recipients: [RecipientSchema],
10 | yes: { type: Number, default: 0 },
11 | no: { type: Number, default: 0 },
12 | _user: { type: Schema.Types.ObjectId, ref: 'User' },
13 | dateSent: Date,
14 | lastResponded: Date
15 | });
16 |
17 | mongoose.model('surveys', surveySchema);
18 |
--------------------------------------------------------------------------------
/server/models/User.js:
--------------------------------------------------------------------------------
1 | const mongoose = require('mongoose');
2 | const { Schema } = mongoose;
3 |
4 | const userSchema = new Schema({
5 | googleId: String,
6 | credits: { type: Number, default: 0 }
7 | });
8 |
9 | mongoose.model('users', userSchema);
10 |
--------------------------------------------------------------------------------
/server/node_modules/.bin/mime:
--------------------------------------------------------------------------------
1 | ../mime/cli.js
--------------------------------------------------------------------------------
/server/node_modules/accepts/LICENSE:
--------------------------------------------------------------------------------
1 | (The MIT License)
2 |
3 | Copyright (c) 2014 Jonathan Ong
4 | Copyright (c) 2015 Douglas Christopher Wilson
5 |
6 | Permission is hereby granted, free of charge, to any person obtaining
7 | a copy of this software and associated documentation files (the
8 | 'Software'), to deal in the Software without restriction, including
9 | without limitation the rights to use, copy, modify, merge, publish,
10 | distribute, sublicense, and/or sell copies of the Software, and to
11 | permit persons to whom the Software is furnished to do so, subject to
12 | the following conditions:
13 |
14 | The above copyright notice and this permission notice shall be
15 | included in all copies or substantial portions of the Software.
16 |
17 | THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
18 | EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
19 | MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
20 | IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
21 | CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
22 | TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
23 | SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
24 |
--------------------------------------------------------------------------------
/server/node_modules/accepts/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "_from": "accepts@~1.3.3",
3 | "_id": "accepts@1.3.3",
4 | "_inBundle": false,
5 | "_integrity": "sha1-w8p0NJOGSMPg2cHjKN1otiLChMo=",
6 | "_location": "/accepts",
7 | "_phantomChildren": {},
8 | "_requested": {
9 | "type": "range",
10 | "registry": true,
11 | "raw": "accepts@~1.3.3",
12 | "name": "accepts",
13 | "escapedName": "accepts",
14 | "rawSpec": "~1.3.3",
15 | "saveSpec": null,
16 | "fetchSpec": "~1.3.3"
17 | },
18 | "_requiredBy": [
19 | "/express"
20 | ],
21 | "_resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.3.tgz",
22 | "_shasum": "c3ca7434938648c3e0d9c1e328dd68b622c284ca",
23 | "_spec": "accepts@~1.3.3",
24 | "_where": "/Users/stephengrider/workspace/FullstackWorkspace/prod/server/node_modules/express",
25 | "bugs": {
26 | "url": "https://github.com/jshttp/accepts/issues"
27 | },
28 | "bundleDependencies": false,
29 | "contributors": [
30 | {
31 | "name": "Douglas Christopher Wilson",
32 | "email": "doug@somethingdoug.com"
33 | },
34 | {
35 | "name": "Jonathan Ong",
36 | "email": "me@jongleberry.com",
37 | "url": "http://jongleberry.com"
38 | }
39 | ],
40 | "dependencies": {
41 | "mime-types": "~2.1.11",
42 | "negotiator": "0.6.1"
43 | },
44 | "deprecated": false,
45 | "description": "Higher-level content negotiation",
46 | "devDependencies": {
47 | "istanbul": "0.4.3",
48 | "mocha": "~1.21.5"
49 | },
50 | "engines": {
51 | "node": ">= 0.6"
52 | },
53 | "files": [
54 | "LICENSE",
55 | "HISTORY.md",
56 | "index.js"
57 | ],
58 | "homepage": "https://github.com/jshttp/accepts#readme",
59 | "keywords": [
60 | "content",
61 | "negotiation",
62 | "accept",
63 | "accepts"
64 | ],
65 | "license": "MIT",
66 | "name": "accepts",
67 | "repository": {
68 | "type": "git",
69 | "url": "git+https://github.com/jshttp/accepts.git"
70 | },
71 | "scripts": {
72 | "test": "mocha --reporter spec --check-leaks --bail test/",
73 | "test-cov": "istanbul cover node_modules/mocha/bin/_mocha -- --reporter dot --check-leaks test/",
74 | "test-travis": "istanbul cover node_modules/mocha/bin/_mocha --report lcovonly -- --reporter spec --check-leaks test/"
75 | },
76 | "version": "1.3.3"
77 | }
78 |
--------------------------------------------------------------------------------
/server/node_modules/array-flatten/LICENSE:
--------------------------------------------------------------------------------
1 | The MIT License (MIT)
2 |
3 | Copyright (c) 2014 Blake Embrey (hello@blakeembrey.com)
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in
13 | all copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
21 | THE SOFTWARE.
22 |
--------------------------------------------------------------------------------
/server/node_modules/array-flatten/README.md:
--------------------------------------------------------------------------------
1 | # Array Flatten
2 |
3 | [![NPM version][npm-image]][npm-url]
4 | [![NPM downloads][downloads-image]][downloads-url]
5 | [![Build status][travis-image]][travis-url]
6 | [![Test coverage][coveralls-image]][coveralls-url]
7 |
8 | > Flatten an array of nested arrays into a single flat array. Accepts an optional depth.
9 |
10 | ## Installation
11 |
12 | ```
13 | npm install array-flatten --save
14 | ```
15 |
16 | ## Usage
17 |
18 | ```javascript
19 | var flatten = require('array-flatten')
20 |
21 | flatten([1, [2, [3, [4, [5], 6], 7], 8], 9])
22 | //=> [1, 2, 3, 4, 5, 6, 7, 8, 9]
23 |
24 | flatten([1, [2, [3, [4, [5], 6], 7], 8], 9], 2)
25 | //=> [1, 2, 3, [4, [5], 6], 7, 8, 9]
26 |
27 | (function () {
28 | flatten(arguments) //=> [1, 2, 3]
29 | })(1, [2, 3])
30 | ```
31 |
32 | ## License
33 |
34 | MIT
35 |
36 | [npm-image]: https://img.shields.io/npm/v/array-flatten.svg?style=flat
37 | [npm-url]: https://npmjs.org/package/array-flatten
38 | [downloads-image]: https://img.shields.io/npm/dm/array-flatten.svg?style=flat
39 | [downloads-url]: https://npmjs.org/package/array-flatten
40 | [travis-image]: https://img.shields.io/travis/blakeembrey/array-flatten.svg?style=flat
41 | [travis-url]: https://travis-ci.org/blakeembrey/array-flatten
42 | [coveralls-image]: https://img.shields.io/coveralls/blakeembrey/array-flatten.svg?style=flat
43 | [coveralls-url]: https://coveralls.io/r/blakeembrey/array-flatten?branch=master
44 |
--------------------------------------------------------------------------------
/server/node_modules/array-flatten/array-flatten.js:
--------------------------------------------------------------------------------
1 | 'use strict'
2 |
3 | /**
4 | * Expose `arrayFlatten`.
5 | */
6 | module.exports = arrayFlatten
7 |
8 | /**
9 | * Recursive flatten function with depth.
10 | *
11 | * @param {Array} array
12 | * @param {Array} result
13 | * @param {Number} depth
14 | * @return {Array}
15 | */
16 | function flattenWithDepth (array, result, depth) {
17 | for (var i = 0; i < array.length; i++) {
18 | var value = array[i]
19 |
20 | if (depth > 0 && Array.isArray(value)) {
21 | flattenWithDepth(value, result, depth - 1)
22 | } else {
23 | result.push(value)
24 | }
25 | }
26 |
27 | return result
28 | }
29 |
30 | /**
31 | * Recursive flatten function. Omitting depth is slightly faster.
32 | *
33 | * @param {Array} array
34 | * @param {Array} result
35 | * @return {Array}
36 | */
37 | function flattenForever (array, result) {
38 | for (var i = 0; i < array.length; i++) {
39 | var value = array[i]
40 |
41 | if (Array.isArray(value)) {
42 | flattenForever(value, result)
43 | } else {
44 | result.push(value)
45 | }
46 | }
47 |
48 | return result
49 | }
50 |
51 | /**
52 | * Flatten an array, with the ability to define a depth.
53 | *
54 | * @param {Array} array
55 | * @param {Number} depth
56 | * @return {Array}
57 | */
58 | function arrayFlatten (array, depth) {
59 | if (depth == null) {
60 | return flattenForever(array, [])
61 | }
62 |
63 | return flattenWithDepth(array, [], depth)
64 | }
65 |
--------------------------------------------------------------------------------
/server/node_modules/array-flatten/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "_from": "array-flatten@1.1.1",
3 | "_id": "array-flatten@1.1.1",
4 | "_inBundle": false,
5 | "_integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=",
6 | "_location": "/array-flatten",
7 | "_phantomChildren": {},
8 | "_requested": {
9 | "type": "version",
10 | "registry": true,
11 | "raw": "array-flatten@1.1.1",
12 | "name": "array-flatten",
13 | "escapedName": "array-flatten",
14 | "rawSpec": "1.1.1",
15 | "saveSpec": null,
16 | "fetchSpec": "1.1.1"
17 | },
18 | "_requiredBy": [
19 | "/express"
20 | ],
21 | "_resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz",
22 | "_shasum": "9a5f699051b1e7073328f2a008968b64ea2955d2",
23 | "_spec": "array-flatten@1.1.1",
24 | "_where": "/Users/stephengrider/workspace/FullstackWorkspace/prod/server/node_modules/express",
25 | "author": {
26 | "name": "Blake Embrey",
27 | "email": "hello@blakeembrey.com",
28 | "url": "http://blakeembrey.me"
29 | },
30 | "bugs": {
31 | "url": "https://github.com/blakeembrey/array-flatten/issues"
32 | },
33 | "bundleDependencies": false,
34 | "deprecated": false,
35 | "description": "Flatten an array of nested arrays into a single flat array",
36 | "devDependencies": {
37 | "istanbul": "^0.3.13",
38 | "mocha": "^2.2.4",
39 | "pre-commit": "^1.0.7",
40 | "standard": "^3.7.3"
41 | },
42 | "files": [
43 | "array-flatten.js",
44 | "LICENSE"
45 | ],
46 | "homepage": "https://github.com/blakeembrey/array-flatten",
47 | "keywords": [
48 | "array",
49 | "flatten",
50 | "arguments",
51 | "depth"
52 | ],
53 | "license": "MIT",
54 | "main": "array-flatten.js",
55 | "name": "array-flatten",
56 | "repository": {
57 | "type": "git",
58 | "url": "git://github.com/blakeembrey/array-flatten.git"
59 | },
60 | "scripts": {
61 | "test": "istanbul cover _mocha -- -R spec"
62 | },
63 | "version": "1.1.1"
64 | }
65 |
--------------------------------------------------------------------------------
/server/node_modules/content-disposition/HISTORY.md:
--------------------------------------------------------------------------------
1 | 0.5.2 / 2016-12-08
2 | ==================
3 |
4 | * Fix `parse` to accept any linear whitespace character
5 |
6 | 0.5.1 / 2016-01-17
7 | ==================
8 |
9 | * perf: enable strict mode
10 |
11 | 0.5.0 / 2014-10-11
12 | ==================
13 |
14 | * Add `parse` function
15 |
16 | 0.4.0 / 2014-09-21
17 | ==================
18 |
19 | * Expand non-Unicode `filename` to the full ISO-8859-1 charset
20 |
21 | 0.3.0 / 2014-09-20
22 | ==================
23 |
24 | * Add `fallback` option
25 | * Add `type` option
26 |
27 | 0.2.0 / 2014-09-19
28 | ==================
29 |
30 | * Reduce ambiguity of file names with hex escape in buggy browsers
31 |
32 | 0.1.2 / 2014-09-19
33 | ==================
34 |
35 | * Fix periodic invalid Unicode filename header
36 |
37 | 0.1.1 / 2014-09-19
38 | ==================
39 |
40 | * Fix invalid characters appearing in `filename*` parameter
41 |
42 | 0.1.0 / 2014-09-18
43 | ==================
44 |
45 | * Make the `filename` argument optional
46 |
47 | 0.0.0 / 2014-09-18
48 | ==================
49 |
50 | * Initial release
51 |
--------------------------------------------------------------------------------
/server/node_modules/content-disposition/LICENSE:
--------------------------------------------------------------------------------
1 | (The MIT License)
2 |
3 | Copyright (c) 2014 Douglas Christopher Wilson
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining
6 | a copy of this software and associated documentation files (the
7 | 'Software'), to deal in the Software without restriction, including
8 | without limitation the rights to use, copy, modify, merge, publish,
9 | distribute, sublicense, and/or sell copies of the Software, and to
10 | permit persons to whom the Software is furnished to do so, subject to
11 | the following conditions:
12 |
13 | The above copyright notice and this permission notice shall be
14 | included in all copies or substantial portions of the Software.
15 |
16 | THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
17 | EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
18 | MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
19 | IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
20 | CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
21 | TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
22 | SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
23 |
--------------------------------------------------------------------------------
/server/node_modules/content-type/HISTORY.md:
--------------------------------------------------------------------------------
1 | 1.0.2 / 2016-05-09
2 | ==================
3 |
4 | * perf: enable strict mode
5 |
6 | 1.0.1 / 2015-02-13
7 | ==================
8 |
9 | * Improve missing `Content-Type` header error message
10 |
11 | 1.0.0 / 2015-02-01
12 | ==================
13 |
14 | * Initial implementation, derived from `media-typer@0.3.0`
15 |
--------------------------------------------------------------------------------
/server/node_modules/content-type/LICENSE:
--------------------------------------------------------------------------------
1 | (The MIT License)
2 |
3 | Copyright (c) 2015 Douglas Christopher Wilson
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining
6 | a copy of this software and associated documentation files (the
7 | 'Software'), to deal in the Software without restriction, including
8 | without limitation the rights to use, copy, modify, merge, publish,
9 | distribute, sublicense, and/or sell copies of the Software, and to
10 | permit persons to whom the Software is furnished to do so, subject to
11 | the following conditions:
12 |
13 | The above copyright notice and this permission notice shall be
14 | included in all copies or substantial portions of the Software.
15 |
16 | THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
17 | EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
18 | MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
19 | IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
20 | CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
21 | TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
22 | SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
23 |
--------------------------------------------------------------------------------
/server/node_modules/content-type/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "_from": "content-type@~1.0.2",
3 | "_id": "content-type@1.0.2",
4 | "_inBundle": false,
5 | "_integrity": "sha1-t9ETrueo3Se9IRM8TcJSnfFyHu0=",
6 | "_location": "/content-type",
7 | "_phantomChildren": {},
8 | "_requested": {
9 | "type": "range",
10 | "registry": true,
11 | "raw": "content-type@~1.0.2",
12 | "name": "content-type",
13 | "escapedName": "content-type",
14 | "rawSpec": "~1.0.2",
15 | "saveSpec": null,
16 | "fetchSpec": "~1.0.2"
17 | },
18 | "_requiredBy": [
19 | "/express"
20 | ],
21 | "_resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.2.tgz",
22 | "_shasum": "b7d113aee7a8dd27bd21133c4dc2529df1721eed",
23 | "_spec": "content-type@~1.0.2",
24 | "_where": "/Users/stephengrider/workspace/FullstackWorkspace/prod/server/node_modules/express",
25 | "author": {
26 | "name": "Douglas Christopher Wilson",
27 | "email": "doug@somethingdoug.com"
28 | },
29 | "bugs": {
30 | "url": "https://github.com/jshttp/content-type/issues"
31 | },
32 | "bundleDependencies": false,
33 | "deprecated": false,
34 | "description": "Create and parse HTTP Content-Type header",
35 | "devDependencies": {
36 | "istanbul": "0.4.3",
37 | "mocha": "~1.21.5"
38 | },
39 | "engines": {
40 | "node": ">= 0.6"
41 | },
42 | "files": [
43 | "LICENSE",
44 | "HISTORY.md",
45 | "README.md",
46 | "index.js"
47 | ],
48 | "homepage": "https://github.com/jshttp/content-type#readme",
49 | "keywords": [
50 | "content-type",
51 | "http",
52 | "req",
53 | "res",
54 | "rfc7231"
55 | ],
56 | "license": "MIT",
57 | "name": "content-type",
58 | "repository": {
59 | "type": "git",
60 | "url": "git+https://github.com/jshttp/content-type.git"
61 | },
62 | "scripts": {
63 | "test": "mocha --reporter spec --check-leaks --bail test/",
64 | "test-ci": "istanbul cover node_modules/mocha/bin/_mocha --report lcovonly -- --reporter spec --check-leaks test/",
65 | "test-cov": "istanbul cover node_modules/mocha/bin/_mocha -- --reporter dot --check-leaks test/"
66 | },
67 | "version": "1.0.2"
68 | }
69 |
--------------------------------------------------------------------------------
/server/node_modules/cookie-signature/.npmignore:
--------------------------------------------------------------------------------
1 | support
2 | test
3 | examples
4 | *.sock
5 |
--------------------------------------------------------------------------------
/server/node_modules/cookie-signature/History.md:
--------------------------------------------------------------------------------
1 | 1.0.6 / 2015-02-03
2 | ==================
3 |
4 | * use `npm test` instead of `make test` to run tests
5 | * clearer assertion messages when checking input
6 |
7 |
8 | 1.0.5 / 2014-09-05
9 | ==================
10 |
11 | * add license to package.json
12 |
13 | 1.0.4 / 2014-06-25
14 | ==================
15 |
16 | * corrected avoidance of timing attacks (thanks @tenbits!)
17 |
18 | 1.0.3 / 2014-01-28
19 | ==================
20 |
21 | * [incorrect] fix for timing attacks
22 |
23 | 1.0.2 / 2014-01-28
24 | ==================
25 |
26 | * fix missing repository warning
27 | * fix typo in test
28 |
29 | 1.0.1 / 2013-04-15
30 | ==================
31 |
32 | * Revert "Changed underlying HMAC algo. to sha512."
33 | * Revert "Fix for timing attacks on MAC verification."
34 |
35 | 0.0.1 / 2010-01-03
36 | ==================
37 |
38 | * Initial release
39 |
--------------------------------------------------------------------------------
/server/node_modules/cookie-signature/Readme.md:
--------------------------------------------------------------------------------
1 |
2 | # cookie-signature
3 |
4 | Sign and unsign cookies.
5 |
6 | ## Example
7 |
8 | ```js
9 | var cookie = require('cookie-signature');
10 |
11 | var val = cookie.sign('hello', 'tobiiscool');
12 | val.should.equal('hello.DGDUkGlIkCzPz+C0B064FNgHdEjox7ch8tOBGslZ5QI');
13 |
14 | var val = cookie.sign('hello', 'tobiiscool');
15 | cookie.unsign(val, 'tobiiscool').should.equal('hello');
16 | cookie.unsign(val, 'luna').should.be.false;
17 | ```
18 |
19 | ## License
20 |
21 | (The MIT License)
22 |
23 | Copyright (c) 2012 LearnBoost <tj@learnboost.com>
24 |
25 | Permission is hereby granted, free of charge, to any person obtaining
26 | a copy of this software and associated documentation files (the
27 | 'Software'), to deal in the Software without restriction, including
28 | without limitation the rights to use, copy, modify, merge, publish,
29 | distribute, sublicense, and/or sell copies of the Software, and to
30 | permit persons to whom the Software is furnished to do so, subject to
31 | the following conditions:
32 |
33 | The above copyright notice and this permission notice shall be
34 | included in all copies or substantial portions of the Software.
35 |
36 | THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
37 | EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
38 | MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
39 | IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
40 | CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
41 | TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
42 | SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
--------------------------------------------------------------------------------
/server/node_modules/cookie-signature/index.js:
--------------------------------------------------------------------------------
1 | /**
2 | * Module dependencies.
3 | */
4 |
5 | var crypto = require('crypto');
6 |
7 | /**
8 | * Sign the given `val` with `secret`.
9 | *
10 | * @param {String} val
11 | * @param {String} secret
12 | * @return {String}
13 | * @api private
14 | */
15 |
16 | exports.sign = function(val, secret){
17 | if ('string' != typeof val) throw new TypeError("Cookie value must be provided as a string.");
18 | if ('string' != typeof secret) throw new TypeError("Secret string must be provided.");
19 | return val + '.' + crypto
20 | .createHmac('sha256', secret)
21 | .update(val)
22 | .digest('base64')
23 | .replace(/\=+$/, '');
24 | };
25 |
26 | /**
27 | * Unsign and decode the given `val` with `secret`,
28 | * returning `false` if the signature is invalid.
29 | *
30 | * @param {String} val
31 | * @param {String} secret
32 | * @return {String|Boolean}
33 | * @api private
34 | */
35 |
36 | exports.unsign = function(val, secret){
37 | if ('string' != typeof val) throw new TypeError("Signed cookie string must be provided.");
38 | if ('string' != typeof secret) throw new TypeError("Secret string must be provided.");
39 | var str = val.slice(0, val.lastIndexOf('.'))
40 | , mac = exports.sign(str, secret);
41 |
42 | return sha1(mac) == sha1(val) ? str : false;
43 | };
44 |
45 | /**
46 | * Private
47 | */
48 |
49 | function sha1(str){
50 | return crypto.createHash('sha1').update(str).digest('hex');
51 | }
52 |
--------------------------------------------------------------------------------
/server/node_modules/cookie-signature/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "_from": "cookie-signature@1.0.6",
3 | "_id": "cookie-signature@1.0.6",
4 | "_inBundle": false,
5 | "_integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=",
6 | "_location": "/cookie-signature",
7 | "_phantomChildren": {},
8 | "_requested": {
9 | "type": "version",
10 | "registry": true,
11 | "raw": "cookie-signature@1.0.6",
12 | "name": "cookie-signature",
13 | "escapedName": "cookie-signature",
14 | "rawSpec": "1.0.6",
15 | "saveSpec": null,
16 | "fetchSpec": "1.0.6"
17 | },
18 | "_requiredBy": [
19 | "/express"
20 | ],
21 | "_resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz",
22 | "_shasum": "e303a882b342cc3ee8ca513a79999734dab3ae2c",
23 | "_spec": "cookie-signature@1.0.6",
24 | "_where": "/Users/stephengrider/workspace/FullstackWorkspace/prod/server/node_modules/express",
25 | "author": {
26 | "name": "TJ Holowaychuk",
27 | "email": "tj@learnboost.com"
28 | },
29 | "bugs": {
30 | "url": "https://github.com/visionmedia/node-cookie-signature/issues"
31 | },
32 | "bundleDependencies": false,
33 | "dependencies": {},
34 | "deprecated": false,
35 | "description": "Sign and unsign cookies",
36 | "devDependencies": {
37 | "mocha": "*",
38 | "should": "*"
39 | },
40 | "homepage": "https://github.com/visionmedia/node-cookie-signature#readme",
41 | "keywords": [
42 | "cookie",
43 | "sign",
44 | "unsign"
45 | ],
46 | "license": "MIT",
47 | "main": "index",
48 | "name": "cookie-signature",
49 | "repository": {
50 | "type": "git",
51 | "url": "git+https://github.com/visionmedia/node-cookie-signature.git"
52 | },
53 | "scripts": {
54 | "test": "mocha --require should --reporter spec"
55 | },
56 | "version": "1.0.6"
57 | }
58 |
--------------------------------------------------------------------------------
/server/node_modules/cookie/LICENSE:
--------------------------------------------------------------------------------
1 | (The MIT License)
2 |
3 | Copyright (c) 2012-2014 Roman Shtylman
4 | Copyright (c) 2015 Douglas Christopher Wilson
5 |
6 | Permission is hereby granted, free of charge, to any person obtaining
7 | a copy of this software and associated documentation files (the
8 | 'Software'), to deal in the Software without restriction, including
9 | without limitation the rights to use, copy, modify, merge, publish,
10 | distribute, sublicense, and/or sell copies of the Software, and to
11 | permit persons to whom the Software is furnished to do so, subject to
12 | the following conditions:
13 |
14 | The above copyright notice and this permission notice shall be
15 | included in all copies or substantial portions of the Software.
16 |
17 | THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
18 | EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
19 | MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
20 | IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
21 | CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
22 | TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
23 | SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
24 |
25 |
--------------------------------------------------------------------------------
/server/node_modules/cookie/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "_from": "cookie@0.3.1",
3 | "_id": "cookie@0.3.1",
4 | "_inBundle": false,
5 | "_integrity": "sha1-5+Ch+e9DtMi6klxcWpboBtFoc7s=",
6 | "_location": "/cookie",
7 | "_phantomChildren": {},
8 | "_requested": {
9 | "type": "version",
10 | "registry": true,
11 | "raw": "cookie@0.3.1",
12 | "name": "cookie",
13 | "escapedName": "cookie",
14 | "rawSpec": "0.3.1",
15 | "saveSpec": null,
16 | "fetchSpec": "0.3.1"
17 | },
18 | "_requiredBy": [
19 | "/express"
20 | ],
21 | "_resolved": "https://registry.npmjs.org/cookie/-/cookie-0.3.1.tgz",
22 | "_shasum": "e7e0a1f9ef43b4c8ba925c5c5a96e806d16873bb",
23 | "_spec": "cookie@0.3.1",
24 | "_where": "/Users/stephengrider/workspace/FullstackWorkspace/prod/server/node_modules/express",
25 | "author": {
26 | "name": "Roman Shtylman",
27 | "email": "shtylman@gmail.com"
28 | },
29 | "bugs": {
30 | "url": "https://github.com/jshttp/cookie/issues"
31 | },
32 | "bundleDependencies": false,
33 | "contributors": [
34 | {
35 | "name": "Douglas Christopher Wilson",
36 | "email": "doug@somethingdoug.com"
37 | }
38 | ],
39 | "deprecated": false,
40 | "description": "HTTP server cookie parsing and serialization",
41 | "devDependencies": {
42 | "istanbul": "0.4.3",
43 | "mocha": "1.21.5"
44 | },
45 | "engines": {
46 | "node": ">= 0.6"
47 | },
48 | "files": [
49 | "HISTORY.md",
50 | "LICENSE",
51 | "README.md",
52 | "index.js"
53 | ],
54 | "homepage": "https://github.com/jshttp/cookie#readme",
55 | "keywords": [
56 | "cookie",
57 | "cookies"
58 | ],
59 | "license": "MIT",
60 | "name": "cookie",
61 | "repository": {
62 | "type": "git",
63 | "url": "git+https://github.com/jshttp/cookie.git"
64 | },
65 | "scripts": {
66 | "test": "mocha --reporter spec --bail --check-leaks test/",
67 | "test-ci": "istanbul cover node_modules/mocha/bin/_mocha --report lcovonly -- --reporter spec --check-leaks test/",
68 | "test-cov": "istanbul cover node_modules/mocha/bin/_mocha -- --reporter dot --check-leaks test/"
69 | },
70 | "version": "0.3.1"
71 | }
72 |
--------------------------------------------------------------------------------
/server/node_modules/debug/.coveralls.yml:
--------------------------------------------------------------------------------
1 | repo_token: SIAeZjKYlHK74rbcFvNHMUzjRiMpflxve
2 |
--------------------------------------------------------------------------------
/server/node_modules/debug/.eslintrc:
--------------------------------------------------------------------------------
1 | {
2 | "env": {
3 | "browser": true,
4 | "node": true
5 | },
6 | "rules": {
7 | "no-console": 0,
8 | "no-empty": [1, { "allowEmptyCatch": true }]
9 | },
10 | "extends": "eslint:recommended"
11 | }
12 |
--------------------------------------------------------------------------------
/server/node_modules/debug/.npmignore:
--------------------------------------------------------------------------------
1 | support
2 | test
3 | examples
4 | example
5 | *.sock
6 | dist
7 | yarn.lock
8 | coverage
9 | bower.json
10 |
--------------------------------------------------------------------------------
/server/node_modules/debug/.travis.yml:
--------------------------------------------------------------------------------
1 |
2 | language: node_js
3 | node_js:
4 | - "6"
5 | - "5"
6 | - "4"
7 |
8 | install:
9 | - make node_modules
10 |
11 | script:
12 | - make lint
13 | - make test
14 | - make coveralls
15 |
--------------------------------------------------------------------------------
/server/node_modules/debug/LICENSE:
--------------------------------------------------------------------------------
1 | (The MIT License)
2 |
3 | Copyright (c) 2014 TJ Holowaychuk
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy of this software
6 | and associated documentation files (the 'Software'), to deal in the Software without restriction,
7 | including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense,
8 | and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so,
9 | subject to the following conditions:
10 |
11 | The above copyright notice and this permission notice shall be included in all copies or substantial
12 | portions of the Software.
13 |
14 | THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT
15 | LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
16 | IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
17 | WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
18 | SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
19 |
20 |
--------------------------------------------------------------------------------
/server/node_modules/debug/Makefile:
--------------------------------------------------------------------------------
1 | # get Makefile directory name: http://stackoverflow.com/a/5982798/376773
2 | THIS_MAKEFILE_PATH:=$(word $(words $(MAKEFILE_LIST)),$(MAKEFILE_LIST))
3 | THIS_DIR:=$(shell cd $(dir $(THIS_MAKEFILE_PATH));pwd)
4 |
5 | # BIN directory
6 | BIN := $(THIS_DIR)/node_modules/.bin
7 |
8 | # Path
9 | PATH := node_modules/.bin:$(PATH)
10 | SHELL := /bin/bash
11 |
12 | # applications
13 | NODE ?= $(shell which node)
14 | YARN ?= $(shell which yarn)
15 | PKG ?= $(if $(YARN),$(YARN),$(NODE) $(shell which npm))
16 | BROWSERIFY ?= $(NODE) $(BIN)/browserify
17 |
18 | .FORCE:
19 |
20 | install: node_modules
21 |
22 | node_modules: package.json
23 | @NODE_ENV= $(PKG) install
24 | @touch node_modules
25 |
26 | lint: .FORCE
27 | eslint browser.js debug.js index.js node.js
28 |
29 | test-node: .FORCE
30 | istanbul cover node_modules/mocha/bin/_mocha -- test/**.js
31 |
32 | test-browser: .FORCE
33 | mkdir -p dist
34 |
35 | @$(BROWSERIFY) \
36 | --standalone debug \
37 | . > dist/debug.js
38 |
39 | karma start --single-run
40 | rimraf dist
41 |
42 | test: .FORCE
43 | concurrently \
44 | "make test-node" \
45 | "make test-browser"
46 |
47 | coveralls:
48 | cat ./coverage/lcov.info | ./node_modules/coveralls/bin/coveralls.js
49 |
50 | .PHONY: all install clean distclean
51 |
--------------------------------------------------------------------------------
/server/node_modules/debug/component.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "debug",
3 | "repo": "visionmedia/debug",
4 | "description": "small debugging utility",
5 | "version": "2.6.7",
6 | "keywords": [
7 | "debug",
8 | "log",
9 | "debugger"
10 | ],
11 | "main": "src/browser.js",
12 | "scripts": [
13 | "src/browser.js",
14 | "src/debug.js"
15 | ],
16 | "dependencies": {
17 | "rauchg/ms.js": "0.7.1"
18 | }
19 | }
20 |
--------------------------------------------------------------------------------
/server/node_modules/debug/karma.conf.js:
--------------------------------------------------------------------------------
1 | // Karma configuration
2 | // Generated on Fri Dec 16 2016 13:09:51 GMT+0000 (UTC)
3 |
4 | module.exports = function(config) {
5 | config.set({
6 |
7 | // base path that will be used to resolve all patterns (eg. files, exclude)
8 | basePath: '',
9 |
10 |
11 | // frameworks to use
12 | // available frameworks: https://npmjs.org/browse/keyword/karma-adapter
13 | frameworks: ['mocha', 'chai', 'sinon'],
14 |
15 |
16 | // list of files / patterns to load in the browser
17 | files: [
18 | 'dist/debug.js',
19 | 'test/*spec.js'
20 | ],
21 |
22 |
23 | // list of files to exclude
24 | exclude: [
25 | 'src/node.js'
26 | ],
27 |
28 |
29 | // preprocess matching files before serving them to the browser
30 | // available preprocessors: https://npmjs.org/browse/keyword/karma-preprocessor
31 | preprocessors: {
32 | },
33 |
34 | // test results reporter to use
35 | // possible values: 'dots', 'progress'
36 | // available reporters: https://npmjs.org/browse/keyword/karma-reporter
37 | reporters: ['progress'],
38 |
39 |
40 | // web server port
41 | port: 9876,
42 |
43 |
44 | // enable / disable colors in the output (reporters and logs)
45 | colors: true,
46 |
47 |
48 | // level of logging
49 | // possible values: config.LOG_DISABLE || config.LOG_ERROR || config.LOG_WARN || config.LOG_INFO || config.LOG_DEBUG
50 | logLevel: config.LOG_INFO,
51 |
52 |
53 | // enable / disable watching file and executing tests whenever any file changes
54 | autoWatch: true,
55 |
56 |
57 | // start these browsers
58 | // available browser launchers: https://npmjs.org/browse/keyword/karma-launcher
59 | browsers: ['PhantomJS'],
60 |
61 |
62 | // Continuous Integration mode
63 | // if true, Karma captures browsers, runs the tests and exits
64 | singleRun: false,
65 |
66 | // Concurrency level
67 | // how many browser should be started simultaneous
68 | concurrency: Infinity
69 | })
70 | }
71 |
--------------------------------------------------------------------------------
/server/node_modules/debug/node.js:
--------------------------------------------------------------------------------
1 | module.exports = require('./src/node');
2 |
--------------------------------------------------------------------------------
/server/node_modules/debug/src/index.js:
--------------------------------------------------------------------------------
1 | /**
2 | * Detect Electron renderer process, which is node, but we should
3 | * treat as a browser.
4 | */
5 |
6 | if (typeof process !== 'undefined' && process.type === 'renderer') {
7 | module.exports = require('./browser.js');
8 | } else {
9 | module.exports = require('./node.js');
10 | }
11 |
--------------------------------------------------------------------------------
/server/node_modules/depd/History.md:
--------------------------------------------------------------------------------
1 | 1.1.0 / 2015-09-14
2 | ==================
3 |
4 | * Enable strict mode in more places
5 | * Support io.js 3.x
6 | * Support io.js 2.x
7 | * Support web browser loading
8 | - Requires bundler like Browserify or webpack
9 |
10 | 1.0.1 / 2015-04-07
11 | ==================
12 |
13 | * Fix `TypeError`s when under `'use strict'` code
14 | * Fix useless type name on auto-generated messages
15 | * Support io.js 1.x
16 | * Support Node.js 0.12
17 |
18 | 1.0.0 / 2014-09-17
19 | ==================
20 |
21 | * No changes
22 |
23 | 0.4.5 / 2014-09-09
24 | ==================
25 |
26 | * Improve call speed to functions using the function wrapper
27 | * Support Node.js 0.6
28 |
29 | 0.4.4 / 2014-07-27
30 | ==================
31 |
32 | * Work-around v8 generating empty stack traces
33 |
34 | 0.4.3 / 2014-07-26
35 | ==================
36 |
37 | * Fix exception when global `Error.stackTraceLimit` is too low
38 |
39 | 0.4.2 / 2014-07-19
40 | ==================
41 |
42 | * Correct call site for wrapped functions and properties
43 |
44 | 0.4.1 / 2014-07-19
45 | ==================
46 |
47 | * Improve automatic message generation for function properties
48 |
49 | 0.4.0 / 2014-07-19
50 | ==================
51 |
52 | * Add `TRACE_DEPRECATION` environment variable
53 | * Remove non-standard grey color from color output
54 | * Support `--no-deprecation` argument
55 | * Support `--trace-deprecation` argument
56 | * Support `deprecate.property(fn, prop, message)`
57 |
58 | 0.3.0 / 2014-06-16
59 | ==================
60 |
61 | * Add `NO_DEPRECATION` environment variable
62 |
63 | 0.2.0 / 2014-06-15
64 | ==================
65 |
66 | * Add `deprecate.property(obj, prop, message)`
67 | * Remove `supports-color` dependency for node.js 0.8
68 |
69 | 0.1.0 / 2014-06-15
70 | ==================
71 |
72 | * Add `deprecate.function(fn, message)`
73 | * Add `process.on('deprecation', fn)` emitter
74 | * Automatically generate message when omitted from `deprecate()`
75 |
76 | 0.0.1 / 2014-06-15
77 | ==================
78 |
79 | * Fix warning for dynamic calls at singe call site
80 |
81 | 0.0.0 / 2014-06-15
82 | ==================
83 |
84 | * Initial implementation
85 |
--------------------------------------------------------------------------------
/server/node_modules/depd/LICENSE:
--------------------------------------------------------------------------------
1 | (The MIT License)
2 |
3 | Copyright (c) 2014-2015 Douglas Christopher Wilson
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining
6 | a copy of this software and associated documentation files (the
7 | 'Software'), to deal in the Software without restriction, including
8 | without limitation the rights to use, copy, modify, merge, publish,
9 | distribute, sublicense, and/or sell copies of the Software, and to
10 | permit persons to whom the Software is furnished to do so, subject to
11 | the following conditions:
12 |
13 | The above copyright notice and this permission notice shall be
14 | included in all copies or substantial portions of the Software.
15 |
16 | THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
17 | EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
18 | MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
19 | IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
20 | CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
21 | TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
22 | SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
23 |
--------------------------------------------------------------------------------
/server/node_modules/depd/lib/browser/index.js:
--------------------------------------------------------------------------------
1 | /*!
2 | * depd
3 | * Copyright(c) 2015 Douglas Christopher Wilson
4 | * MIT Licensed
5 | */
6 |
7 | 'use strict'
8 |
9 | /**
10 | * Module exports.
11 | * @public
12 | */
13 |
14 | module.exports = depd
15 |
16 | /**
17 | * Create deprecate for namespace in caller.
18 | */
19 |
20 | function depd(namespace) {
21 | if (!namespace) {
22 | throw new TypeError('argument namespace is required')
23 | }
24 |
25 | function deprecate(message) {
26 | // no-op in browser
27 | }
28 |
29 | deprecate._file = undefined
30 | deprecate._ignored = true
31 | deprecate._namespace = namespace
32 | deprecate._traced = false
33 | deprecate._warned = Object.create(null)
34 |
35 | deprecate.function = wrapfunction
36 | deprecate.property = wrapproperty
37 |
38 | return deprecate
39 | }
40 |
41 | /**
42 | * Return a wrapped function in a deprecation message.
43 | *
44 | * This is a no-op version of the wrapper, which does nothing but call
45 | * validation.
46 | */
47 |
48 | function wrapfunction(fn, message) {
49 | if (typeof fn !== 'function') {
50 | throw new TypeError('argument fn must be a function')
51 | }
52 |
53 | return fn
54 | }
55 |
56 | /**
57 | * Wrap property in a deprecation message.
58 | *
59 | * This is a no-op version of the wrapper, which does nothing but call
60 | * validation.
61 | */
62 |
63 | function wrapproperty(obj, prop, message) {
64 | if (!obj || (typeof obj !== 'object' && typeof obj !== 'function')) {
65 | throw new TypeError('argument obj must be object')
66 | }
67 |
68 | var descriptor = Object.getOwnPropertyDescriptor(obj, prop)
69 |
70 | if (!descriptor) {
71 | throw new TypeError('must call property on owner object')
72 | }
73 |
74 | if (!descriptor.configurable) {
75 | throw new TypeError('property must be configurable')
76 | }
77 |
78 | return
79 | }
80 |
--------------------------------------------------------------------------------
/server/node_modules/depd/lib/compat/buffer-concat.js:
--------------------------------------------------------------------------------
1 | /*!
2 | * depd
3 | * Copyright(c) 2014 Douglas Christopher Wilson
4 | * MIT Licensed
5 | */
6 |
7 | 'use strict'
8 |
9 | /**
10 | * Module exports.
11 | */
12 |
13 | module.exports = bufferConcat
14 |
15 | /**
16 | * Concatenate an array of Buffers.
17 | */
18 |
19 | function bufferConcat(bufs) {
20 | var length = 0
21 |
22 | for (var i = 0, len = bufs.length; i < len; i++) {
23 | length += bufs[i].length
24 | }
25 |
26 | var buf = new Buffer(length)
27 | var pos = 0
28 |
29 | for (var i = 0, len = bufs.length; i < len; i++) {
30 | bufs[i].copy(buf, pos)
31 | pos += bufs[i].length
32 | }
33 |
34 | return buf
35 | }
36 |
--------------------------------------------------------------------------------
/server/node_modules/depd/lib/compat/event-listener-count.js:
--------------------------------------------------------------------------------
1 | /*!
2 | * depd
3 | * Copyright(c) 2015 Douglas Christopher Wilson
4 | * MIT Licensed
5 | */
6 |
7 | 'use strict'
8 |
9 | /**
10 | * Module exports.
11 | * @public
12 | */
13 |
14 | module.exports = eventListenerCount
15 |
16 | /**
17 | * Get the count of listeners on an event emitter of a specific type.
18 | */
19 |
20 | function eventListenerCount(emitter, type) {
21 | return emitter.listeners(type).length
22 | }
23 |
--------------------------------------------------------------------------------
/server/node_modules/depd/lib/compat/index.js:
--------------------------------------------------------------------------------
1 | /*!
2 | * depd
3 | * Copyright(c) 2014-2015 Douglas Christopher Wilson
4 | * MIT Licensed
5 | */
6 |
7 | 'use strict'
8 |
9 | /**
10 | * Module dependencies.
11 | * @private
12 | */
13 |
14 | var Buffer = require('buffer')
15 | var EventEmitter = require('events').EventEmitter
16 |
17 | /**
18 | * Module exports.
19 | * @public
20 | */
21 |
22 | lazyProperty(module.exports, 'bufferConcat', function bufferConcat() {
23 | return Buffer.concat || require('./buffer-concat')
24 | })
25 |
26 | lazyProperty(module.exports, 'callSiteToString', function callSiteToString() {
27 | var limit = Error.stackTraceLimit
28 | var obj = {}
29 | var prep = Error.prepareStackTrace
30 |
31 | function prepareObjectStackTrace(obj, stack) {
32 | return stack
33 | }
34 |
35 | Error.prepareStackTrace = prepareObjectStackTrace
36 | Error.stackTraceLimit = 2
37 |
38 | // capture the stack
39 | Error.captureStackTrace(obj)
40 |
41 | // slice the stack
42 | var stack = obj.stack.slice()
43 |
44 | Error.prepareStackTrace = prep
45 | Error.stackTraceLimit = limit
46 |
47 | return stack[0].toString ? toString : require('./callsite-tostring')
48 | })
49 |
50 | lazyProperty(module.exports, 'eventListenerCount', function eventListenerCount() {
51 | return EventEmitter.listenerCount || require('./event-listener-count')
52 | })
53 |
54 | /**
55 | * Define a lazy property.
56 | */
57 |
58 | function lazyProperty(obj, prop, getter) {
59 | function get() {
60 | var val = getter()
61 |
62 | Object.defineProperty(obj, prop, {
63 | configurable: true,
64 | enumerable: true,
65 | value: val
66 | })
67 |
68 | return val
69 | }
70 |
71 | Object.defineProperty(obj, prop, {
72 | configurable: true,
73 | enumerable: true,
74 | get: get
75 | })
76 | }
77 |
78 | /**
79 | * Call toString() on the obj
80 | */
81 |
82 | function toString(obj) {
83 | return obj.toString()
84 | }
85 |
--------------------------------------------------------------------------------
/server/node_modules/depd/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "_from": "depd@~1.1.0",
3 | "_id": "depd@1.1.0",
4 | "_inBundle": false,
5 | "_integrity": "sha1-4b2Cxqq2ztlluXuIsX7T5SjKGMM=",
6 | "_location": "/depd",
7 | "_phantomChildren": {},
8 | "_requested": {
9 | "type": "range",
10 | "registry": true,
11 | "raw": "depd@~1.1.0",
12 | "name": "depd",
13 | "escapedName": "depd",
14 | "rawSpec": "~1.1.0",
15 | "saveSpec": null,
16 | "fetchSpec": "~1.1.0"
17 | },
18 | "_requiredBy": [
19 | "/express",
20 | "/http-errors",
21 | "/send"
22 | ],
23 | "_resolved": "https://registry.npmjs.org/depd/-/depd-1.1.0.tgz",
24 | "_shasum": "e1bd82c6aab6ced965b97b88b17ed3e528ca18c3",
25 | "_spec": "depd@~1.1.0",
26 | "_where": "/Users/stephengrider/workspace/FullstackWorkspace/prod/server/node_modules/express",
27 | "author": {
28 | "name": "Douglas Christopher Wilson",
29 | "email": "doug@somethingdoug.com"
30 | },
31 | "browser": "lib/browser/index.js",
32 | "bugs": {
33 | "url": "https://github.com/dougwilson/nodejs-depd/issues"
34 | },
35 | "bundleDependencies": false,
36 | "deprecated": false,
37 | "description": "Deprecate all the things",
38 | "devDependencies": {
39 | "beautify-benchmark": "0.2.4",
40 | "benchmark": "1.0.0",
41 | "istanbul": "0.3.5",
42 | "mocha": "~1.21.5"
43 | },
44 | "engines": {
45 | "node": ">= 0.6"
46 | },
47 | "files": [
48 | "lib/",
49 | "History.md",
50 | "LICENSE",
51 | "index.js",
52 | "Readme.md"
53 | ],
54 | "homepage": "https://github.com/dougwilson/nodejs-depd#readme",
55 | "keywords": [
56 | "deprecate",
57 | "deprecated"
58 | ],
59 | "license": "MIT",
60 | "name": "depd",
61 | "repository": {
62 | "type": "git",
63 | "url": "git+https://github.com/dougwilson/nodejs-depd.git"
64 | },
65 | "scripts": {
66 | "bench": "node benchmark/index.js",
67 | "test": "mocha --reporter spec --bail test/",
68 | "test-ci": "istanbul cover node_modules/mocha/bin/_mocha --report lcovonly -- --reporter spec --no-exit test/",
69 | "test-cov": "istanbul cover node_modules/mocha/bin/_mocha -- --reporter dot test/"
70 | },
71 | "version": "1.1.0"
72 | }
73 |
--------------------------------------------------------------------------------
/server/node_modules/destroy/LICENSE:
--------------------------------------------------------------------------------
1 |
2 | The MIT License (MIT)
3 |
4 | Copyright (c) 2014 Jonathan Ong me@jongleberry.com
5 |
6 | Permission is hereby granted, free of charge, to any person obtaining a copy
7 | of this software and associated documentation files (the "Software"), to deal
8 | in the Software without restriction, including without limitation the rights
9 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
10 | copies of the Software, and to permit persons to whom the Software is
11 | furnished to do so, subject to the following conditions:
12 |
13 | The above copyright notice and this permission notice shall be included in
14 | all copies or substantial portions of the Software.
15 |
16 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
19 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
20 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
21 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
22 | THE SOFTWARE.
23 |
--------------------------------------------------------------------------------
/server/node_modules/destroy/index.js:
--------------------------------------------------------------------------------
1 | /*!
2 | * destroy
3 | * Copyright(c) 2014 Jonathan Ong
4 | * MIT Licensed
5 | */
6 |
7 | 'use strict'
8 |
9 | /**
10 | * Module dependencies.
11 | * @private
12 | */
13 |
14 | var ReadStream = require('fs').ReadStream
15 | var Stream = require('stream')
16 |
17 | /**
18 | * Module exports.
19 | * @public
20 | */
21 |
22 | module.exports = destroy
23 |
24 | /**
25 | * Destroy a stream.
26 | *
27 | * @param {object} stream
28 | * @public
29 | */
30 |
31 | function destroy(stream) {
32 | if (stream instanceof ReadStream) {
33 | return destroyReadStream(stream)
34 | }
35 |
36 | if (!(stream instanceof Stream)) {
37 | return stream
38 | }
39 |
40 | if (typeof stream.destroy === 'function') {
41 | stream.destroy()
42 | }
43 |
44 | return stream
45 | }
46 |
47 | /**
48 | * Destroy a ReadStream.
49 | *
50 | * @param {object} stream
51 | * @private
52 | */
53 |
54 | function destroyReadStream(stream) {
55 | stream.destroy()
56 |
57 | if (typeof stream.close === 'function') {
58 | // node.js core bug work-around
59 | stream.on('open', onOpenClose)
60 | }
61 |
62 | return stream
63 | }
64 |
65 | /**
66 | * On open handler to close stream.
67 | * @private
68 | */
69 |
70 | function onOpenClose() {
71 | if (typeof this.fd === 'number') {
72 | // actually close down the fd
73 | this.close()
74 | }
75 | }
76 |
--------------------------------------------------------------------------------
/server/node_modules/destroy/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "_from": "destroy@~1.0.4",
3 | "_id": "destroy@1.0.4",
4 | "_inBundle": false,
5 | "_integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=",
6 | "_location": "/destroy",
7 | "_phantomChildren": {},
8 | "_requested": {
9 | "type": "range",
10 | "registry": true,
11 | "raw": "destroy@~1.0.4",
12 | "name": "destroy",
13 | "escapedName": "destroy",
14 | "rawSpec": "~1.0.4",
15 | "saveSpec": null,
16 | "fetchSpec": "~1.0.4"
17 | },
18 | "_requiredBy": [
19 | "/send"
20 | ],
21 | "_resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz",
22 | "_shasum": "978857442c44749e4206613e37946205826abd80",
23 | "_spec": "destroy@~1.0.4",
24 | "_where": "/Users/stephengrider/workspace/FullstackWorkspace/prod/server/node_modules/send",
25 | "author": {
26 | "name": "Jonathan Ong",
27 | "email": "me@jongleberry.com",
28 | "url": "http://jongleberry.com"
29 | },
30 | "bugs": {
31 | "url": "https://github.com/stream-utils/destroy/issues"
32 | },
33 | "bundleDependencies": false,
34 | "contributors": [
35 | {
36 | "name": "Douglas Christopher Wilson",
37 | "email": "doug@somethingdoug.com"
38 | }
39 | ],
40 | "deprecated": false,
41 | "description": "destroy a stream if possible",
42 | "devDependencies": {
43 | "istanbul": "0.4.2",
44 | "mocha": "2.3.4"
45 | },
46 | "files": [
47 | "index.js",
48 | "LICENSE"
49 | ],
50 | "homepage": "https://github.com/stream-utils/destroy#readme",
51 | "keywords": [
52 | "stream",
53 | "streams",
54 | "destroy",
55 | "cleanup",
56 | "leak",
57 | "fd"
58 | ],
59 | "license": "MIT",
60 | "name": "destroy",
61 | "repository": {
62 | "type": "git",
63 | "url": "git+https://github.com/stream-utils/destroy.git"
64 | },
65 | "scripts": {
66 | "test": "mocha --reporter spec",
67 | "test-cov": "istanbul cover node_modules/mocha/bin/_mocha -- --reporter dot",
68 | "test-travis": "istanbul cover node_modules/mocha/bin/_mocha --report lcovonly -- --reporter dot"
69 | },
70 | "version": "1.0.4"
71 | }
72 |
--------------------------------------------------------------------------------
/server/node_modules/ee-first/LICENSE:
--------------------------------------------------------------------------------
1 |
2 | The MIT License (MIT)
3 |
4 | Copyright (c) 2014 Jonathan Ong me@jongleberry.com
5 |
6 | Permission is hereby granted, free of charge, to any person obtaining a copy
7 | of this software and associated documentation files (the "Software"), to deal
8 | in the Software without restriction, including without limitation the rights
9 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
10 | copies of the Software, and to permit persons to whom the Software is
11 | furnished to do so, subject to the following conditions:
12 |
13 | The above copyright notice and this permission notice shall be included in
14 | all copies or substantial portions of the Software.
15 |
16 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
19 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
20 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
21 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
22 | THE SOFTWARE.
23 |
--------------------------------------------------------------------------------
/server/node_modules/ee-first/index.js:
--------------------------------------------------------------------------------
1 | /*!
2 | * ee-first
3 | * Copyright(c) 2014 Jonathan Ong
4 | * MIT Licensed
5 | */
6 |
7 | 'use strict'
8 |
9 | /**
10 | * Module exports.
11 | * @public
12 | */
13 |
14 | module.exports = first
15 |
16 | /**
17 | * Get the first event in a set of event emitters and event pairs.
18 | *
19 | * @param {array} stuff
20 | * @param {function} done
21 | * @public
22 | */
23 |
24 | function first(stuff, done) {
25 | if (!Array.isArray(stuff))
26 | throw new TypeError('arg must be an array of [ee, events...] arrays')
27 |
28 | var cleanups = []
29 |
30 | for (var i = 0; i < stuff.length; i++) {
31 | var arr = stuff[i]
32 |
33 | if (!Array.isArray(arr) || arr.length < 2)
34 | throw new TypeError('each array member must be [ee, events...]')
35 |
36 | var ee = arr[0]
37 |
38 | for (var j = 1; j < arr.length; j++) {
39 | var event = arr[j]
40 | var fn = listener(event, callback)
41 |
42 | // listen to the event
43 | ee.on(event, fn)
44 | // push this listener to the list of cleanups
45 | cleanups.push({
46 | ee: ee,
47 | event: event,
48 | fn: fn,
49 | })
50 | }
51 | }
52 |
53 | function callback() {
54 | cleanup()
55 | done.apply(null, arguments)
56 | }
57 |
58 | function cleanup() {
59 | var x
60 | for (var i = 0; i < cleanups.length; i++) {
61 | x = cleanups[i]
62 | x.ee.removeListener(x.event, x.fn)
63 | }
64 | }
65 |
66 | function thunk(fn) {
67 | done = fn
68 | }
69 |
70 | thunk.cancel = cleanup
71 |
72 | return thunk
73 | }
74 |
75 | /**
76 | * Create the event listener.
77 | * @private
78 | */
79 |
80 | function listener(event, done) {
81 | return function onevent(arg1) {
82 | var args = new Array(arguments.length)
83 | var ee = this
84 | var err = event === 'error'
85 | ? arg1
86 | : null
87 |
88 | // copy args to prevent arguments escaping scope
89 | for (var i = 0; i < args.length; i++) {
90 | args[i] = arguments[i]
91 | }
92 |
93 | done(err, ee, event, args)
94 | }
95 | }
96 |
--------------------------------------------------------------------------------
/server/node_modules/ee-first/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "_from": "ee-first@1.1.1",
3 | "_id": "ee-first@1.1.1",
4 | "_inBundle": false,
5 | "_integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=",
6 | "_location": "/ee-first",
7 | "_phantomChildren": {},
8 | "_requested": {
9 | "type": "version",
10 | "registry": true,
11 | "raw": "ee-first@1.1.1",
12 | "name": "ee-first",
13 | "escapedName": "ee-first",
14 | "rawSpec": "1.1.1",
15 | "saveSpec": null,
16 | "fetchSpec": "1.1.1"
17 | },
18 | "_requiredBy": [
19 | "/on-finished"
20 | ],
21 | "_resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz",
22 | "_shasum": "590c61156b0ae2f4f0255732a158b266bc56b21d",
23 | "_spec": "ee-first@1.1.1",
24 | "_where": "/Users/stephengrider/workspace/FullstackWorkspace/prod/server/node_modules/on-finished",
25 | "author": {
26 | "name": "Jonathan Ong",
27 | "email": "me@jongleberry.com",
28 | "url": "http://jongleberry.com"
29 | },
30 | "bugs": {
31 | "url": "https://github.com/jonathanong/ee-first/issues"
32 | },
33 | "bundleDependencies": false,
34 | "contributors": [
35 | {
36 | "name": "Douglas Christopher Wilson",
37 | "email": "doug@somethingdoug.com"
38 | }
39 | ],
40 | "deprecated": false,
41 | "description": "return the first event in a set of ee/event pairs",
42 | "devDependencies": {
43 | "istanbul": "0.3.9",
44 | "mocha": "2.2.5"
45 | },
46 | "files": [
47 | "index.js",
48 | "LICENSE"
49 | ],
50 | "homepage": "https://github.com/jonathanong/ee-first#readme",
51 | "license": "MIT",
52 | "name": "ee-first",
53 | "repository": {
54 | "type": "git",
55 | "url": "git+https://github.com/jonathanong/ee-first.git"
56 | },
57 | "scripts": {
58 | "test": "mocha --reporter spec --bail --check-leaks test/",
59 | "test-cov": "istanbul cover node_modules/mocha/bin/_mocha -- --reporter dot --check-leaks test/",
60 | "test-travis": "istanbul cover node_modules/mocha/bin/_mocha --report lcovonly -- --reporter spec --check-leaks test/"
61 | },
62 | "version": "1.1.1"
63 | }
64 |
--------------------------------------------------------------------------------
/server/node_modules/encodeurl/HISTORY.md:
--------------------------------------------------------------------------------
1 | 1.0.1 / 2016-06-09
2 | ==================
3 |
4 | * Fix encoding unpaired surrogates at start/end of string
5 |
6 | 1.0.0 / 2016-06-08
7 | ==================
8 |
9 | * Initial release
10 |
--------------------------------------------------------------------------------
/server/node_modules/encodeurl/LICENSE:
--------------------------------------------------------------------------------
1 | (The MIT License)
2 |
3 | Copyright (c) 2016 Douglas Christopher Wilson
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining
6 | a copy of this software and associated documentation files (the
7 | 'Software'), to deal in the Software without restriction, including
8 | without limitation the rights to use, copy, modify, merge, publish,
9 | distribute, sublicense, and/or sell copies of the Software, and to
10 | permit persons to whom the Software is furnished to do so, subject to
11 | the following conditions:
12 |
13 | The above copyright notice and this permission notice shall be
14 | included in all copies or substantial portions of the Software.
15 |
16 | THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
17 | EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
18 | MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
19 | IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
20 | CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
21 | TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
22 | SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
23 |
--------------------------------------------------------------------------------
/server/node_modules/encodeurl/index.js:
--------------------------------------------------------------------------------
1 | /*!
2 | * encodeurl
3 | * Copyright(c) 2016 Douglas Christopher Wilson
4 | * MIT Licensed
5 | */
6 |
7 | 'use strict'
8 |
9 | /**
10 | * Module exports.
11 | * @public
12 | */
13 |
14 | module.exports = encodeUrl
15 |
16 | /**
17 | * RegExp to match non-URL code points, *after* encoding (i.e. not including "%")
18 | * and including invalid escape sequences.
19 | * @private
20 | */
21 |
22 | var ENCODE_CHARS_REGEXP = /(?:[^\x21\x25\x26-\x3B\x3D\x3F-\x5B\x5D\x5F\x61-\x7A\x7E]|%(?:[^0-9A-Fa-f]|[0-9A-Fa-f][^0-9A-Fa-f]))+/g
23 |
24 | /**
25 | * RegExp to match unmatched surrogate pair.
26 | * @private
27 | */
28 |
29 | var UNMATCHED_SURROGATE_PAIR_REGEXP = /(^|[^\uD800-\uDBFF])[\uDC00-\uDFFF]|[\uD800-\uDBFF]([^\uDC00-\uDFFF]|$)/g
30 |
31 | /**
32 | * String to replace unmatched surrogate pair with.
33 | * @private
34 | */
35 |
36 | var UNMATCHED_SURROGATE_PAIR_REPLACE = '$1\uFFFD$2'
37 |
38 | /**
39 | * Encode a URL to a percent-encoded form, excluding already-encoded sequences.
40 | *
41 | * This function will take an already-encoded URL and encode all the non-URL
42 | * code points. This function will not encode the "%" character unless it is
43 | * not part of a valid sequence (`%20` will be left as-is, but `%foo` will
44 | * be encoded as `%25foo`).
45 | *
46 | * This encode is meant to be "safe" and does not throw errors. It will try as
47 | * hard as it can to properly encode the given URL, including replacing any raw,
48 | * unpaired surrogate pairs with the Unicode replacement character prior to
49 | * encoding.
50 | *
51 | * @param {string} url
52 | * @return {string}
53 | * @public
54 | */
55 |
56 | function encodeUrl (url) {
57 | return String(url)
58 | .replace(UNMATCHED_SURROGATE_PAIR_REGEXP, UNMATCHED_SURROGATE_PAIR_REPLACE)
59 | .replace(ENCODE_CHARS_REGEXP, encodeURI)
60 | }
61 |
--------------------------------------------------------------------------------
/server/node_modules/escape-html/LICENSE:
--------------------------------------------------------------------------------
1 | (The MIT License)
2 |
3 | Copyright (c) 2012-2013 TJ Holowaychuk
4 | Copyright (c) 2015 Andreas Lubbe
5 | Copyright (c) 2015 Tiancheng "Timothy" Gu
6 |
7 | Permission is hereby granted, free of charge, to any person obtaining
8 | a copy of this software and associated documentation files (the
9 | 'Software'), to deal in the Software without restriction, including
10 | without limitation the rights to use, copy, modify, merge, publish,
11 | distribute, sublicense, and/or sell copies of the Software, and to
12 | permit persons to whom the Software is furnished to do so, subject to
13 | the following conditions:
14 |
15 | The above copyright notice and this permission notice shall be
16 | included in all copies or substantial portions of the Software.
17 |
18 | THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
19 | EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
20 | MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
21 | IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
22 | CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
23 | TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
24 | SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
25 |
--------------------------------------------------------------------------------
/server/node_modules/escape-html/Readme.md:
--------------------------------------------------------------------------------
1 |
2 | # escape-html
3 |
4 | Escape string for use in HTML
5 |
6 | ## Example
7 |
8 | ```js
9 | var escape = require('escape-html');
10 | var html = escape('foo & bar');
11 | // -> foo & bar
12 | ```
13 |
14 | ## Benchmark
15 |
16 | ```
17 | $ npm run-script bench
18 |
19 | > escape-html@1.0.3 bench nodejs-escape-html
20 | > node benchmark/index.js
21 |
22 |
23 | http_parser@1.0
24 | node@0.10.33
25 | v8@3.14.5.9
26 | ares@1.9.0-DEV
27 | uv@0.10.29
28 | zlib@1.2.3
29 | modules@11
30 | openssl@1.0.1j
31 |
32 | 1 test completed.
33 | 2 tests completed.
34 | 3 tests completed.
35 |
36 | no special characters x 19,435,271 ops/sec ±0.85% (187 runs sampled)
37 | single special character x 6,132,421 ops/sec ±0.67% (194 runs sampled)
38 | many special characters x 3,175,826 ops/sec ±0.65% (193 runs sampled)
39 | ```
40 |
41 | ## License
42 |
43 | MIT
--------------------------------------------------------------------------------
/server/node_modules/escape-html/index.js:
--------------------------------------------------------------------------------
1 | /*!
2 | * escape-html
3 | * Copyright(c) 2012-2013 TJ Holowaychuk
4 | * Copyright(c) 2015 Andreas Lubbe
5 | * Copyright(c) 2015 Tiancheng "Timothy" Gu
6 | * MIT Licensed
7 | */
8 |
9 | 'use strict';
10 |
11 | /**
12 | * Module variables.
13 | * @private
14 | */
15 |
16 | var matchHtmlRegExp = /["'&<>]/;
17 |
18 | /**
19 | * Module exports.
20 | * @public
21 | */
22 |
23 | module.exports = escapeHtml;
24 |
25 | /**
26 | * Escape special characters in the given string of html.
27 | *
28 | * @param {string} string The string to escape for inserting into HTML
29 | * @return {string}
30 | * @public
31 | */
32 |
33 | function escapeHtml(string) {
34 | var str = '' + string;
35 | var match = matchHtmlRegExp.exec(str);
36 |
37 | if (!match) {
38 | return str;
39 | }
40 |
41 | var escape;
42 | var html = '';
43 | var index = 0;
44 | var lastIndex = 0;
45 |
46 | for (index = match.index; index < str.length; index++) {
47 | switch (str.charCodeAt(index)) {
48 | case 34: // "
49 | escape = '"';
50 | break;
51 | case 38: // &
52 | escape = '&';
53 | break;
54 | case 39: // '
55 | escape = ''';
56 | break;
57 | case 60: // <
58 | escape = '<';
59 | break;
60 | case 62: // >
61 | escape = '>';
62 | break;
63 | default:
64 | continue;
65 | }
66 |
67 | if (lastIndex !== index) {
68 | html += str.substring(lastIndex, index);
69 | }
70 |
71 | lastIndex = index + 1;
72 | html += escape;
73 | }
74 |
75 | return lastIndex !== index
76 | ? html + str.substring(lastIndex, index)
77 | : html;
78 | }
79 |
--------------------------------------------------------------------------------
/server/node_modules/escape-html/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "_from": "escape-html@~1.0.3",
3 | "_id": "escape-html@1.0.3",
4 | "_inBundle": false,
5 | "_integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=",
6 | "_location": "/escape-html",
7 | "_phantomChildren": {},
8 | "_requested": {
9 | "type": "range",
10 | "registry": true,
11 | "raw": "escape-html@~1.0.3",
12 | "name": "escape-html",
13 | "escapedName": "escape-html",
14 | "rawSpec": "~1.0.3",
15 | "saveSpec": null,
16 | "fetchSpec": "~1.0.3"
17 | },
18 | "_requiredBy": [
19 | "/express",
20 | "/finalhandler",
21 | "/send",
22 | "/serve-static"
23 | ],
24 | "_resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz",
25 | "_shasum": "0258eae4d3d0c0974de1c169188ef0051d1d1988",
26 | "_spec": "escape-html@~1.0.3",
27 | "_where": "/Users/stephengrider/workspace/FullstackWorkspace/prod/server/node_modules/express",
28 | "bugs": {
29 | "url": "https://github.com/component/escape-html/issues"
30 | },
31 | "bundleDependencies": false,
32 | "deprecated": false,
33 | "description": "Escape string for use in HTML",
34 | "devDependencies": {
35 | "beautify-benchmark": "0.2.4",
36 | "benchmark": "1.0.0"
37 | },
38 | "files": [
39 | "LICENSE",
40 | "Readme.md",
41 | "index.js"
42 | ],
43 | "homepage": "https://github.com/component/escape-html#readme",
44 | "keywords": [
45 | "escape",
46 | "html",
47 | "utility"
48 | ],
49 | "license": "MIT",
50 | "name": "escape-html",
51 | "repository": {
52 | "type": "git",
53 | "url": "git+https://github.com/component/escape-html.git"
54 | },
55 | "scripts": {
56 | "bench": "node benchmark/index.js"
57 | },
58 | "version": "1.0.3"
59 | }
60 |
--------------------------------------------------------------------------------
/server/node_modules/etag/HISTORY.md:
--------------------------------------------------------------------------------
1 | 1.8.0 / 2017-02-18
2 | ==================
3 |
4 | * Use SHA1 instead of MD5 for ETag hashing
5 | - Improves performance for larger entities
6 | - Works with FIPS 140-2 OpenSSL configuration
7 |
8 | 1.7.0 / 2015-06-08
9 | ==================
10 |
11 | * Always include entity length in ETags for hash length extensions
12 | * Generate non-Stats ETags using MD5 only (no longer CRC32)
13 | * Improve stat performance by removing hashing
14 | * Remove base64 padding in ETags to shorten
15 | * Use MD5 instead of MD4 in weak ETags over 1KB
16 |
17 | 1.6.0 / 2015-05-10
18 | ==================
19 |
20 | * Improve support for JXcore
21 | * Remove requirement of `atime` in the stats object
22 | * Support "fake" stats objects in environments without `fs`
23 |
24 | 1.5.1 / 2014-11-19
25 | ==================
26 |
27 | * deps: crc@3.2.1
28 | - Minor fixes
29 |
30 | 1.5.0 / 2014-10-14
31 | ==================
32 |
33 | * Improve string performance
34 | * Slightly improve speed for weak ETags over 1KB
35 |
36 | 1.4.0 / 2014-09-21
37 | ==================
38 |
39 | * Support "fake" stats objects
40 | * Support Node.js 0.6
41 |
42 | 1.3.1 / 2014-09-14
43 | ==================
44 |
45 | * Use the (new and improved) `crc` for crc32
46 |
47 | 1.3.0 / 2014-08-29
48 | ==================
49 |
50 | * Default strings to strong ETags
51 | * Improve speed for weak ETags over 1KB
52 |
53 | 1.2.1 / 2014-08-29
54 | ==================
55 |
56 | * Use the (much faster) `buffer-crc32` for crc32
57 |
58 | 1.2.0 / 2014-08-24
59 | ==================
60 |
61 | * Add support for file stat objects
62 |
63 | 1.1.0 / 2014-08-24
64 | ==================
65 |
66 | * Add fast-path for empty entity
67 | * Add weak ETag generation
68 | * Shrink size of generated ETags
69 |
70 | 1.0.1 / 2014-08-24
71 | ==================
72 |
73 | * Fix behavior of string containing Unicode
74 |
75 | 1.0.0 / 2014-05-18
76 | ==================
77 |
78 | * Initial release
79 |
--------------------------------------------------------------------------------
/server/node_modules/etag/LICENSE:
--------------------------------------------------------------------------------
1 | (The MIT License)
2 |
3 | Copyright (c) 2014-2016 Douglas Christopher Wilson
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining
6 | a copy of this software and associated documentation files (the
7 | 'Software'), to deal in the Software without restriction, including
8 | without limitation the rights to use, copy, modify, merge, publish,
9 | distribute, sublicense, and/or sell copies of the Software, and to
10 | permit persons to whom the Software is furnished to do so, subject to
11 | the following conditions:
12 |
13 | The above copyright notice and this permission notice shall be
14 | included in all copies or substantial portions of the Software.
15 |
16 | THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
17 | EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
18 | MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
19 | IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
20 | CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
21 | TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
22 | SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
23 |
--------------------------------------------------------------------------------
/server/node_modules/express/LICENSE:
--------------------------------------------------------------------------------
1 | (The MIT License)
2 |
3 | Copyright (c) 2009-2014 TJ Holowaychuk
4 | Copyright (c) 2013-2014 Roman Shtylman
5 | Copyright (c) 2014-2015 Douglas Christopher Wilson
6 |
7 | Permission is hereby granted, free of charge, to any person obtaining
8 | a copy of this software and associated documentation files (the
9 | 'Software'), to deal in the Software without restriction, including
10 | without limitation the rights to use, copy, modify, merge, publish,
11 | distribute, sublicense, and/or sell copies of the Software, and to
12 | permit persons to whom the Software is furnished to do so, subject to
13 | the following conditions:
14 |
15 | The above copyright notice and this permission notice shall be
16 | included in all copies or substantial portions of the Software.
17 |
18 | THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
19 | EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
20 | MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
21 | IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
22 | CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
23 | TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
24 | SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
25 |
--------------------------------------------------------------------------------
/server/node_modules/express/index.js:
--------------------------------------------------------------------------------
1 | /*!
2 | * express
3 | * Copyright(c) 2009-2013 TJ Holowaychuk
4 | * Copyright(c) 2013 Roman Shtylman
5 | * Copyright(c) 2014-2015 Douglas Christopher Wilson
6 | * MIT Licensed
7 | */
8 |
9 | 'use strict';
10 |
11 | module.exports = require('./lib/express');
12 |
--------------------------------------------------------------------------------
/server/node_modules/express/lib/middleware/init.js:
--------------------------------------------------------------------------------
1 | /*!
2 | * express
3 | * Copyright(c) 2009-2013 TJ Holowaychuk
4 | * Copyright(c) 2013 Roman Shtylman
5 | * Copyright(c) 2014-2015 Douglas Christopher Wilson
6 | * MIT Licensed
7 | */
8 |
9 | 'use strict';
10 |
11 | /**
12 | * Module dependencies.
13 | * @private
14 | */
15 |
16 | var setPrototypeOf = require('setprototypeof')
17 |
18 | /**
19 | * Initialization middleware, exposing the
20 | * request and response to each other, as well
21 | * as defaulting the X-Powered-By header field.
22 | *
23 | * @param {Function} app
24 | * @return {Function}
25 | * @api private
26 | */
27 |
28 | exports.init = function(app){
29 | return function expressInit(req, res, next){
30 | if (app.enabled('x-powered-by')) res.setHeader('X-Powered-By', 'Express');
31 | req.res = res;
32 | res.req = req;
33 | req.next = next;
34 |
35 | setPrototypeOf(req, app.request)
36 | setPrototypeOf(res, app.response)
37 |
38 | res.locals = res.locals || Object.create(null);
39 |
40 | next();
41 | };
42 | };
43 |
44 |
--------------------------------------------------------------------------------
/server/node_modules/express/lib/middleware/query.js:
--------------------------------------------------------------------------------
1 | /*!
2 | * express
3 | * Copyright(c) 2009-2013 TJ Holowaychuk
4 | * Copyright(c) 2013 Roman Shtylman
5 | * Copyright(c) 2014-2015 Douglas Christopher Wilson
6 | * MIT Licensed
7 | */
8 |
9 | 'use strict';
10 |
11 | /**
12 | * Module dependencies.
13 | */
14 |
15 | var parseUrl = require('parseurl');
16 | var qs = require('qs');
17 |
18 | /**
19 | * @param {Object} options
20 | * @return {Function}
21 | * @api public
22 | */
23 |
24 | module.exports = function query(options) {
25 | var opts = Object.create(options || null);
26 | var queryparse = qs.parse;
27 |
28 | if (typeof options === 'function') {
29 | queryparse = options;
30 | opts = undefined;
31 | }
32 |
33 | if (opts !== undefined && opts.allowPrototypes === undefined) {
34 | // back-compat for qs module
35 | opts.allowPrototypes = true;
36 | }
37 |
38 | return function query(req, res, next){
39 | if (!req.query) {
40 | var val = parseUrl(req).query;
41 | req.query = queryparse(val, opts);
42 | }
43 |
44 | next();
45 | };
46 | };
47 |
--------------------------------------------------------------------------------
/server/node_modules/finalhandler/LICENSE:
--------------------------------------------------------------------------------
1 | (The MIT License)
2 |
3 | Copyright (c) 2014-2017 Douglas Christopher Wilson
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining
6 | a copy of this software and associated documentation files (the
7 | 'Software'), to deal in the Software without restriction, including
8 | without limitation the rights to use, copy, modify, merge, publish,
9 | distribute, sublicense, and/or sell copies of the Software, and to
10 | permit persons to whom the Software is furnished to do so, subject to
11 | the following conditions:
12 |
13 | The above copyright notice and this permission notice shall be
14 | included in all copies or substantial portions of the Software.
15 |
16 | THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
17 | EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
18 | MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
19 | IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
20 | CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
21 | TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
22 | SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
23 |
--------------------------------------------------------------------------------
/server/node_modules/forwarded/HISTORY.md:
--------------------------------------------------------------------------------
1 | 0.1.0 / 2014-09-21
2 | ==================
3 |
4 | * Initial release
5 |
--------------------------------------------------------------------------------
/server/node_modules/forwarded/LICENSE:
--------------------------------------------------------------------------------
1 | (The MIT License)
2 |
3 | Copyright (c) 2014 Douglas Christopher Wilson
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining
6 | a copy of this software and associated documentation files (the
7 | 'Software'), to deal in the Software without restriction, including
8 | without limitation the rights to use, copy, modify, merge, publish,
9 | distribute, sublicense, and/or sell copies of the Software, and to
10 | permit persons to whom the Software is furnished to do so, subject to
11 | the following conditions:
12 |
13 | The above copyright notice and this permission notice shall be
14 | included in all copies or substantial portions of the Software.
15 |
16 | THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
17 | EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
18 | MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
19 | IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
20 | CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
21 | TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
22 | SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
23 |
--------------------------------------------------------------------------------
/server/node_modules/forwarded/README.md:
--------------------------------------------------------------------------------
1 | # forwarded
2 |
3 | [![NPM Version][npm-image]][npm-url]
4 | [![NPM Downloads][downloads-image]][downloads-url]
5 | [![Node.js Version][node-version-image]][node-version-url]
6 | [![Build Status][travis-image]][travis-url]
7 | [![Test Coverage][coveralls-image]][coveralls-url]
8 |
9 | Parse HTTP X-Forwarded-For header
10 |
11 | ## Installation
12 |
13 | ```sh
14 | $ npm install forwarded
15 | ```
16 |
17 | ## API
18 |
19 | ```js
20 | var forwarded = require('forwarded')
21 | ```
22 |
23 | ### forwarded(req)
24 |
25 | ```js
26 | var addresses = forwarded(req)
27 | ```
28 |
29 | Parse the `X-Forwarded-For` header from the request. Returns an array
30 | of the addresses, including the socket address for the `req`. In reverse
31 | order (i.e. index `0` is the socket address and the last index is the
32 | furthest address, typically the end-user).
33 |
34 | ## Testing
35 |
36 | ```sh
37 | $ npm test
38 | ```
39 |
40 | ## License
41 |
42 | [MIT](LICENSE)
43 |
44 | [npm-image]: https://img.shields.io/npm/v/forwarded.svg?style=flat
45 | [npm-url]: https://npmjs.org/package/forwarded
46 | [node-version-image]: https://img.shields.io/node/v/forwarded.svg?style=flat
47 | [node-version-url]: http://nodejs.org/download/
48 | [travis-image]: https://img.shields.io/travis/jshttp/forwarded.svg?style=flat
49 | [travis-url]: https://travis-ci.org/jshttp/forwarded
50 | [coveralls-image]: https://img.shields.io/coveralls/jshttp/forwarded.svg?style=flat
51 | [coveralls-url]: https://coveralls.io/r/jshttp/forwarded?branch=master
52 | [downloads-image]: https://img.shields.io/npm/dm/forwarded.svg?style=flat
53 | [downloads-url]: https://npmjs.org/package/forwarded
54 |
--------------------------------------------------------------------------------
/server/node_modules/forwarded/index.js:
--------------------------------------------------------------------------------
1 | /*!
2 | * forwarded
3 | * Copyright(c) 2014 Douglas Christopher Wilson
4 | * MIT Licensed
5 | */
6 |
7 | /**
8 | * Module exports.
9 | */
10 |
11 | module.exports = forwarded
12 |
13 | /**
14 | * Get all addresses in the request, using the `X-Forwarded-For` header.
15 | *
16 | * @param {Object} req
17 | * @api public
18 | */
19 |
20 | function forwarded(req) {
21 | if (!req) {
22 | throw new TypeError('argument req is required')
23 | }
24 |
25 | // simple header parsing
26 | var proxyAddrs = (req.headers['x-forwarded-for'] || '')
27 | .split(/ *, */)
28 | .filter(Boolean)
29 | .reverse()
30 | var socketAddr = req.connection.remoteAddress
31 | var addrs = [socketAddr].concat(proxyAddrs)
32 |
33 | // return all addresses
34 | return addrs
35 | }
36 |
--------------------------------------------------------------------------------
/server/node_modules/forwarded/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "_from": "forwarded@~0.1.0",
3 | "_id": "forwarded@0.1.0",
4 | "_inBundle": false,
5 | "_integrity": "sha1-Ge+YdMSuHCl7zweP3mOgm2aoQ2M=",
6 | "_location": "/forwarded",
7 | "_phantomChildren": {},
8 | "_requested": {
9 | "type": "range",
10 | "registry": true,
11 | "raw": "forwarded@~0.1.0",
12 | "name": "forwarded",
13 | "escapedName": "forwarded",
14 | "rawSpec": "~0.1.0",
15 | "saveSpec": null,
16 | "fetchSpec": "~0.1.0"
17 | },
18 | "_requiredBy": [
19 | "/proxy-addr"
20 | ],
21 | "_resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.1.0.tgz",
22 | "_shasum": "19ef9874c4ae1c297bcf078fde63a09b66a84363",
23 | "_spec": "forwarded@~0.1.0",
24 | "_where": "/Users/stephengrider/workspace/FullstackWorkspace/prod/server/node_modules/proxy-addr",
25 | "bugs": {
26 | "url": "https://github.com/jshttp/forwarded/issues"
27 | },
28 | "bundleDependencies": false,
29 | "contributors": [
30 | {
31 | "name": "Douglas Christopher Wilson",
32 | "email": "doug@somethingdoug.com"
33 | }
34 | ],
35 | "deprecated": false,
36 | "description": "Parse HTTP X-Forwarded-For header",
37 | "devDependencies": {
38 | "istanbul": "0.3.2",
39 | "mocha": "~1.21.4"
40 | },
41 | "engines": {
42 | "node": ">= 0.6"
43 | },
44 | "files": [
45 | "LICENSE",
46 | "HISTORY.md",
47 | "README.md",
48 | "index.js"
49 | ],
50 | "homepage": "https://github.com/jshttp/forwarded#readme",
51 | "keywords": [
52 | "x-forwarded-for",
53 | "http",
54 | "req"
55 | ],
56 | "license": "MIT",
57 | "name": "forwarded",
58 | "repository": {
59 | "type": "git",
60 | "url": "git+https://github.com/jshttp/forwarded.git"
61 | },
62 | "scripts": {
63 | "test": "mocha --reporter spec --bail --check-leaks test/",
64 | "test-cov": "istanbul cover node_modules/mocha/bin/_mocha -- --reporter dot --check-leaks test/",
65 | "test-travis": "istanbul cover node_modules/mocha/bin/_mocha --report lcovonly -- --reporter spec --check-leaks test/"
66 | },
67 | "version": "0.1.0"
68 | }
69 |
--------------------------------------------------------------------------------
/server/node_modules/fresh/HISTORY.md:
--------------------------------------------------------------------------------
1 | 0.5.0 / 2017-02-21
2 | ==================
3 |
4 | * Fix incorrect result when `If-None-Match` has both `*` and ETags
5 | * Fix weak `ETag` matching to match spec
6 | * perf: delay reading header values until needed
7 | * perf: skip checking modified time if ETag check failed
8 | * perf: skip parsing `If-None-Match` when no `ETag` header
9 | * perf: use `Date.parse` instead of `new Date`
10 |
11 | 0.4.0 / 2017-02-05
12 | ==================
13 |
14 | * Fix false detection of `no-cache` request directive
15 | * perf: enable strict mode
16 | * perf: hoist regular expressions
17 | * perf: remove duplicate conditional
18 | * perf: remove unnecessary boolean coercions
19 |
20 | 0.3.0 / 2015-05-12
21 | ==================
22 |
23 | * Add weak `ETag` matching support
24 |
25 | 0.2.4 / 2014-09-07
26 | ==================
27 |
28 | * Support Node.js 0.6
29 |
30 | 0.2.3 / 2014-09-07
31 | ==================
32 |
33 | * Move repository to jshttp
34 |
35 | 0.2.2 / 2014-02-19
36 | ==================
37 |
38 | * Revert "Fix for blank page on Safari reload"
39 |
40 | 0.2.1 / 2014-01-29
41 | ==================
42 |
43 | * Fix for blank page on Safari reload
44 |
45 | 0.2.0 / 2013-08-11
46 | ==================
47 |
48 | * Return stale for `Cache-Control: no-cache`
49 |
50 | 0.1.0 / 2012-06-15
51 | ==================
52 |
53 | * Add `If-None-Match: *` support
54 |
55 | 0.0.1 / 2012-06-10
56 | ==================
57 |
58 | * Initial release
59 |
--------------------------------------------------------------------------------
/server/node_modules/fresh/LICENSE:
--------------------------------------------------------------------------------
1 | (The MIT License)
2 |
3 | Copyright (c) 2012 TJ Holowaychuk
4 | Copyright (c) 2016-2017 Douglas Christopher Wilson
5 |
6 | Permission is hereby granted, free of charge, to any person obtaining
7 | a copy of this software and associated documentation files (the
8 | 'Software'), to deal in the Software without restriction, including
9 | without limitation the rights to use, copy, modify, merge, publish,
10 | distribute, sublicense, and/or sell copies of the Software, and to
11 | permit persons to whom the Software is furnished to do so, subject to
12 | the following conditions:
13 |
14 | The above copyright notice and this permission notice shall be
15 | included in all copies or substantial portions of the Software.
16 |
17 | THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
18 | EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
19 | MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
20 | IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
21 | CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
22 | TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
23 | SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
24 |
--------------------------------------------------------------------------------
/server/node_modules/fresh/index.js:
--------------------------------------------------------------------------------
1 | /*!
2 | * fresh
3 | * Copyright(c) 2012 TJ Holowaychuk
4 | * Copyright(c) 2016-2017 Douglas Christopher Wilson
5 | * MIT Licensed
6 | */
7 |
8 | 'use strict'
9 |
10 | /**
11 | * RegExp to check for no-cache token in Cache-Control.
12 | * @private
13 | */
14 |
15 | var CACHE_CONTROL_NO_CACHE_REGEXP = /(?:^|,)\s*?no-cache\s*?(?:,|$)/
16 |
17 | /**
18 | * Simple expression to split token list.
19 | * @private
20 | */
21 |
22 | var TOKEN_LIST_REGEXP = / *, */
23 |
24 | /**
25 | * Module exports.
26 | * @public
27 | */
28 |
29 | module.exports = fresh
30 |
31 | /**
32 | * Check freshness of the response using request and response headers.
33 | *
34 | * @param {Object} reqHeaders
35 | * @param {Object} resHeaders
36 | * @return {Boolean}
37 | * @public
38 | */
39 |
40 | function fresh (reqHeaders, resHeaders) {
41 | // fields
42 | var modifiedSince = reqHeaders['if-modified-since']
43 | var noneMatch = reqHeaders['if-none-match']
44 |
45 | // unconditional request
46 | if (!modifiedSince && !noneMatch) {
47 | return false
48 | }
49 |
50 | // Always return stale when Cache-Control: no-cache
51 | // to support end-to-end reload requests
52 | // https://tools.ietf.org/html/rfc2616#section-14.9.4
53 | var cacheControl = reqHeaders['cache-control']
54 | if (cacheControl && CACHE_CONTROL_NO_CACHE_REGEXP.test(cacheControl)) {
55 | return false
56 | }
57 |
58 | // if-none-match
59 | if (noneMatch && noneMatch !== '*') {
60 | var etag = resHeaders['etag']
61 | var etagStale = !etag || noneMatch.split(TOKEN_LIST_REGEXP).every(function (match) {
62 | return match !== etag && match !== 'W/' + etag && 'W/' + match !== etag
63 | })
64 |
65 | if (etagStale) {
66 | return false
67 | }
68 | }
69 |
70 | // if-modified-since
71 | if (modifiedSince) {
72 | var lastModified = resHeaders['last-modified']
73 | var modifiedStale = !lastModified || Date.parse(lastModified) > Date.parse(modifiedSince)
74 |
75 | if (modifiedStale) {
76 | return false
77 | }
78 | }
79 |
80 | return true
81 | }
82 |
--------------------------------------------------------------------------------
/server/node_modules/http-errors/LICENSE:
--------------------------------------------------------------------------------
1 |
2 | The MIT License (MIT)
3 |
4 | Copyright (c) 2014 Jonathan Ong me@jongleberry.com
5 | Copyright (c) 2016 Douglas Christopher Wilson doug@somethingdoug.com
6 |
7 | Permission is hereby granted, free of charge, to any person obtaining a copy
8 | of this software and associated documentation files (the "Software"), to deal
9 | in the Software without restriction, including without limitation the rights
10 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
11 | copies of the Software, and to permit persons to whom the Software is
12 | furnished to do so, subject to the following conditions:
13 |
14 | The above copyright notice and this permission notice shall be included in
15 | all copies or substantial portions of the Software.
16 |
17 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
18 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
19 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
20 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
21 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
22 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
23 | THE SOFTWARE.
24 |
--------------------------------------------------------------------------------
/server/node_modules/inherits/LICENSE:
--------------------------------------------------------------------------------
1 | The ISC License
2 |
3 | Copyright (c) Isaac Z. Schlueter
4 |
5 | Permission to use, copy, modify, and/or distribute this software for any
6 | purpose with or without fee is hereby granted, provided that the above
7 | copyright notice and this permission notice appear in all copies.
8 |
9 | THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
10 | REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND
11 | FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
12 | INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
13 | LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
14 | OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
15 | PERFORMANCE OF THIS SOFTWARE.
16 |
17 |
--------------------------------------------------------------------------------
/server/node_modules/inherits/README.md:
--------------------------------------------------------------------------------
1 | Browser-friendly inheritance fully compatible with standard node.js
2 | [inherits](http://nodejs.org/api/util.html#util_util_inherits_constructor_superconstructor).
3 |
4 | This package exports standard `inherits` from node.js `util` module in
5 | node environment, but also provides alternative browser-friendly
6 | implementation through [browser
7 | field](https://gist.github.com/shtylman/4339901). Alternative
8 | implementation is a literal copy of standard one located in standalone
9 | module to avoid requiring of `util`. It also has a shim for old
10 | browsers with no `Object.create` support.
11 |
12 | While keeping you sure you are using standard `inherits`
13 | implementation in node.js environment, it allows bundlers such as
14 | [browserify](https://github.com/substack/node-browserify) to not
15 | include full `util` package to your client code if all you need is
16 | just `inherits` function. It worth, because browser shim for `util`
17 | package is large and `inherits` is often the single function you need
18 | from it.
19 |
20 | It's recommended to use this package instead of
21 | `require('util').inherits` for any code that has chances to be used
22 | not only in node.js but in browser too.
23 |
24 | ## usage
25 |
26 | ```js
27 | var inherits = require('inherits');
28 | // then use exactly as the standard one
29 | ```
30 |
31 | ## note on version ~1.0
32 |
33 | Version ~1.0 had completely different motivation and is not compatible
34 | neither with 2.0 nor with standard node.js `inherits`.
35 |
36 | If you are using version ~1.0 and planning to switch to ~2.0, be
37 | careful:
38 |
39 | * new version uses `super_` instead of `super` for referencing
40 | superclass
41 | * new version overwrites current prototype while old one preserves any
42 | existing fields on it
43 |
--------------------------------------------------------------------------------
/server/node_modules/inherits/inherits.js:
--------------------------------------------------------------------------------
1 | try {
2 | var util = require('util');
3 | if (typeof util.inherits !== 'function') throw '';
4 | module.exports = util.inherits;
5 | } catch (e) {
6 | module.exports = require('./inherits_browser.js');
7 | }
8 |
--------------------------------------------------------------------------------
/server/node_modules/inherits/inherits_browser.js:
--------------------------------------------------------------------------------
1 | if (typeof Object.create === 'function') {
2 | // implementation from standard node.js 'util' module
3 | module.exports = function inherits(ctor, superCtor) {
4 | ctor.super_ = superCtor
5 | ctor.prototype = Object.create(superCtor.prototype, {
6 | constructor: {
7 | value: ctor,
8 | enumerable: false,
9 | writable: true,
10 | configurable: true
11 | }
12 | });
13 | };
14 | } else {
15 | // old school shim for old browsers
16 | module.exports = function inherits(ctor, superCtor) {
17 | ctor.super_ = superCtor
18 | var TempCtor = function () {}
19 | TempCtor.prototype = superCtor.prototype
20 | ctor.prototype = new TempCtor()
21 | ctor.prototype.constructor = ctor
22 | }
23 | }
24 |
--------------------------------------------------------------------------------
/server/node_modules/inherits/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "_from": "inherits@2.0.3",
3 | "_id": "inherits@2.0.3",
4 | "_inBundle": false,
5 | "_integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=",
6 | "_location": "/inherits",
7 | "_phantomChildren": {},
8 | "_requested": {
9 | "type": "version",
10 | "registry": true,
11 | "raw": "inherits@2.0.3",
12 | "name": "inherits",
13 | "escapedName": "inherits",
14 | "rawSpec": "2.0.3",
15 | "saveSpec": null,
16 | "fetchSpec": "2.0.3"
17 | },
18 | "_requiredBy": [
19 | "/http-errors"
20 | ],
21 | "_resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz",
22 | "_shasum": "633c2c83e3da42a502f52466022480f4208261de",
23 | "_spec": "inherits@2.0.3",
24 | "_where": "/Users/stephengrider/workspace/FullstackWorkspace/prod/server/node_modules/http-errors",
25 | "browser": "./inherits_browser.js",
26 | "bugs": {
27 | "url": "https://github.com/isaacs/inherits/issues"
28 | },
29 | "bundleDependencies": false,
30 | "deprecated": false,
31 | "description": "Browser-friendly inheritance fully compatible with standard node.js inherits()",
32 | "devDependencies": {
33 | "tap": "^7.1.0"
34 | },
35 | "files": [
36 | "inherits.js",
37 | "inherits_browser.js"
38 | ],
39 | "homepage": "https://github.com/isaacs/inherits#readme",
40 | "keywords": [
41 | "inheritance",
42 | "class",
43 | "klass",
44 | "oop",
45 | "object-oriented",
46 | "inherits",
47 | "browser",
48 | "browserify"
49 | ],
50 | "license": "ISC",
51 | "main": "./inherits.js",
52 | "name": "inherits",
53 | "repository": {
54 | "type": "git",
55 | "url": "git://github.com/isaacs/inherits.git"
56 | },
57 | "scripts": {
58 | "test": "node test"
59 | },
60 | "version": "2.0.3"
61 | }
62 |
--------------------------------------------------------------------------------
/server/node_modules/ipaddr.js/.npmignore:
--------------------------------------------------------------------------------
1 | .idea
2 | node_modules
3 |
--------------------------------------------------------------------------------
/server/node_modules/ipaddr.js/.travis.yml:
--------------------------------------------------------------------------------
1 | language: node_js
2 |
3 | node_js:
4 | - "0.10"
5 | - "0.11"
6 | - "0.12"
7 | - "4.0"
8 | - "4.1"
9 | - "4.2"
10 | - "5"
11 |
--------------------------------------------------------------------------------
/server/node_modules/ipaddr.js/Cakefile:
--------------------------------------------------------------------------------
1 | fs = require 'fs'
2 | CoffeeScript = require 'coffee-script'
3 | nodeunit = require 'nodeunit'
4 | UglifyJS = require 'uglify-js'
5 |
6 | task 'build', 'build the JavaScript files from CoffeeScript source', build = (cb) ->
7 | source = fs.readFileSync 'src/ipaddr.coffee'
8 | fs.writeFileSync 'lib/ipaddr.js', CoffeeScript.compile source.toString()
9 |
10 | invoke 'test'
11 | invoke 'compress'
12 |
13 | task 'test', 'run the bundled tests', (cb) ->
14 | nodeunit.reporters.default.run ['test']
15 |
16 | task 'compress', 'uglify the resulting javascript', (cb) ->
17 | result = UglifyJS.minify('lib/ipaddr.js')
18 | fs.writeFileSync('ipaddr.min.js', result.code)
19 |
--------------------------------------------------------------------------------
/server/node_modules/ipaddr.js/LICENSE:
--------------------------------------------------------------------------------
1 | Copyright (C) 2011 Peter Zotov
2 |
3 | Permission is hereby granted, free of charge, to any person obtaining a copy
4 | of this software and associated documentation files (the "Software"), to deal
5 | in the Software without restriction, including without limitation the rights
6 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
7 | copies of the Software, and to permit persons to whom the Software is
8 | furnished to do so, subject to the following conditions:
9 |
10 | The above copyright notice and this permission notice shall be included in
11 | all copies or substantial portions of the Software.
12 |
13 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
14 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
15 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
16 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
17 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
18 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
19 | THE SOFTWARE.
--------------------------------------------------------------------------------
/server/node_modules/ipaddr.js/bower.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "ipaddr.js",
3 | "version": "1.3.0",
4 | "homepage": "https://github.com/whitequark/ipaddr.js",
5 | "authors": [
6 | "whitequark "
7 | ],
8 | "description": "IP address manipulation library in JavaScript (CoffeeScript, actually)",
9 | "main": "lib/ipaddr.js",
10 | "moduleType": [
11 | "globals",
12 | "node"
13 | ],
14 | "keywords": [
15 | "javscript",
16 | "ip",
17 | "address",
18 | "ipv4",
19 | "ipv6"
20 | ],
21 | "license": "MIT",
22 | "ignore": [
23 | "**/.*",
24 | "node_modules",
25 | "bower_components",
26 | "test",
27 | "tests"
28 | ]
29 | }
30 |
--------------------------------------------------------------------------------
/server/node_modules/ipaddr.js/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "_from": "ipaddr.js@1.3.0",
3 | "_id": "ipaddr.js@1.3.0",
4 | "_inBundle": false,
5 | "_integrity": "sha1-HgOlL9rYOou7KyXL9JmLTP/NPew=",
6 | "_location": "/ipaddr.js",
7 | "_phantomChildren": {},
8 | "_requested": {
9 | "type": "version",
10 | "registry": true,
11 | "raw": "ipaddr.js@1.3.0",
12 | "name": "ipaddr.js",
13 | "escapedName": "ipaddr.js",
14 | "rawSpec": "1.3.0",
15 | "saveSpec": null,
16 | "fetchSpec": "1.3.0"
17 | },
18 | "_requiredBy": [
19 | "/proxy-addr"
20 | ],
21 | "_resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.3.0.tgz",
22 | "_shasum": "1e03a52fdad83a8bbb2b25cbf4998b4cffcd3dec",
23 | "_spec": "ipaddr.js@1.3.0",
24 | "_where": "/Users/stephengrider/workspace/FullstackWorkspace/prod/server/node_modules/proxy-addr",
25 | "author": {
26 | "name": "whitequark",
27 | "email": "whitequark@whitequark.org"
28 | },
29 | "bugs": {
30 | "url": "https://github.com/whitequark/ipaddr.js/issues"
31 | },
32 | "bundleDependencies": false,
33 | "dependencies": {},
34 | "deprecated": false,
35 | "description": "A library for manipulating IPv4 and IPv6 addresses in JavaScript.",
36 | "devDependencies": {
37 | "coffee-script": "~1.6",
38 | "nodeunit": ">=0.8.2 <0.8.7",
39 | "uglify-js": "latest"
40 | },
41 | "directories": {
42 | "lib": "./lib"
43 | },
44 | "engines": {
45 | "node": ">= 0.10"
46 | },
47 | "homepage": "https://github.com/whitequark/ipaddr.js#readme",
48 | "keywords": [
49 | "ip",
50 | "ipv4",
51 | "ipv6"
52 | ],
53 | "license": "MIT",
54 | "main": "./lib/ipaddr",
55 | "name": "ipaddr.js",
56 | "repository": {
57 | "type": "git",
58 | "url": "git://github.com/whitequark/ipaddr.js.git"
59 | },
60 | "scripts": {
61 | "test": "cake build test"
62 | },
63 | "version": "1.3.0"
64 | }
65 |
--------------------------------------------------------------------------------
/server/node_modules/media-typer/HISTORY.md:
--------------------------------------------------------------------------------
1 | 0.3.0 / 2014-09-07
2 | ==================
3 |
4 | * Support Node.js 0.6
5 | * Throw error when parameter format invalid on parse
6 |
7 | 0.2.0 / 2014-06-18
8 | ==================
9 |
10 | * Add `typer.format()` to format media types
11 |
12 | 0.1.0 / 2014-06-17
13 | ==================
14 |
15 | * Accept `req` as argument to `parse`
16 | * Accept `res` as argument to `parse`
17 | * Parse media type with extra LWS between type and first parameter
18 |
19 | 0.0.0 / 2014-06-13
20 | ==================
21 |
22 | * Initial implementation
23 |
--------------------------------------------------------------------------------
/server/node_modules/media-typer/LICENSE:
--------------------------------------------------------------------------------
1 | (The MIT License)
2 |
3 | Copyright (c) 2014 Douglas Christopher Wilson
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining
6 | a copy of this software and associated documentation files (the
7 | 'Software'), to deal in the Software without restriction, including
8 | without limitation the rights to use, copy, modify, merge, publish,
9 | distribute, sublicense, and/or sell copies of the Software, and to
10 | permit persons to whom the Software is furnished to do so, subject to
11 | the following conditions:
12 |
13 | The above copyright notice and this permission notice shall be
14 | included in all copies or substantial portions of the Software.
15 |
16 | THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
17 | EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
18 | MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
19 | IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
20 | CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
21 | TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
22 | SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
23 |
--------------------------------------------------------------------------------
/server/node_modules/media-typer/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "_from": "media-typer@0.3.0",
3 | "_id": "media-typer@0.3.0",
4 | "_inBundle": false,
5 | "_integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=",
6 | "_location": "/media-typer",
7 | "_phantomChildren": {},
8 | "_requested": {
9 | "type": "version",
10 | "registry": true,
11 | "raw": "media-typer@0.3.0",
12 | "name": "media-typer",
13 | "escapedName": "media-typer",
14 | "rawSpec": "0.3.0",
15 | "saveSpec": null,
16 | "fetchSpec": "0.3.0"
17 | },
18 | "_requiredBy": [
19 | "/type-is"
20 | ],
21 | "_resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz",
22 | "_shasum": "8710d7af0aa626f8fffa1ce00168545263255748",
23 | "_spec": "media-typer@0.3.0",
24 | "_where": "/Users/stephengrider/workspace/FullstackWorkspace/prod/server/node_modules/type-is",
25 | "author": {
26 | "name": "Douglas Christopher Wilson",
27 | "email": "doug@somethingdoug.com"
28 | },
29 | "bugs": {
30 | "url": "https://github.com/jshttp/media-typer/issues"
31 | },
32 | "bundleDependencies": false,
33 | "deprecated": false,
34 | "description": "Simple RFC 6838 media type parser and formatter",
35 | "devDependencies": {
36 | "istanbul": "0.3.2",
37 | "mocha": "~1.21.4",
38 | "should": "~4.0.4"
39 | },
40 | "engines": {
41 | "node": ">= 0.6"
42 | },
43 | "files": [
44 | "LICENSE",
45 | "HISTORY.md",
46 | "index.js"
47 | ],
48 | "homepage": "https://github.com/jshttp/media-typer#readme",
49 | "license": "MIT",
50 | "name": "media-typer",
51 | "repository": {
52 | "type": "git",
53 | "url": "git+https://github.com/jshttp/media-typer.git"
54 | },
55 | "scripts": {
56 | "test": "mocha --reporter spec --check-leaks --bail test/",
57 | "test-cov": "istanbul cover node_modules/mocha/bin/_mocha -- --reporter dot --check-leaks test/",
58 | "test-travis": "istanbul cover node_modules/mocha/bin/_mocha --report lcovonly -- --reporter spec --check-leaks test/"
59 | },
60 | "version": "0.3.0"
61 | }
62 |
--------------------------------------------------------------------------------
/server/node_modules/merge-descriptors/HISTORY.md:
--------------------------------------------------------------------------------
1 | 1.0.1 / 2016-01-17
2 | ==================
3 |
4 | * perf: enable strict mode
5 |
6 | 1.0.0 / 2015-03-01
7 | ==================
8 |
9 | * Add option to only add new descriptors
10 | * Add simple argument validation
11 | * Add jsdoc to source file
12 |
13 | 0.0.2 / 2013-12-14
14 | ==================
15 |
16 | * Move repository to `component` organization
17 |
18 | 0.0.1 / 2013-10-29
19 | ==================
20 |
21 | * Initial release
22 |
--------------------------------------------------------------------------------
/server/node_modules/merge-descriptors/LICENSE:
--------------------------------------------------------------------------------
1 | (The MIT License)
2 |
3 | Copyright (c) 2013 Jonathan Ong
4 | Copyright (c) 2015 Douglas Christopher Wilson
5 |
6 | Permission is hereby granted, free of charge, to any person obtaining
7 | a copy of this software and associated documentation files (the
8 | 'Software'), to deal in the Software without restriction, including
9 | without limitation the rights to use, copy, modify, merge, publish,
10 | distribute, sublicense, and/or sell copies of the Software, and to
11 | permit persons to whom the Software is furnished to do so, subject to
12 | the following conditions:
13 |
14 | The above copyright notice and this permission notice shall be
15 | included in all copies or substantial portions of the Software.
16 |
17 | THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
18 | EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
19 | MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
20 | IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
21 | CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
22 | TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
23 | SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
24 |
--------------------------------------------------------------------------------
/server/node_modules/merge-descriptors/README.md:
--------------------------------------------------------------------------------
1 | # Merge Descriptors
2 |
3 | [![NPM Version][npm-image]][npm-url]
4 | [![NPM Downloads][downloads-image]][downloads-url]
5 | [![Build Status][travis-image]][travis-url]
6 | [![Test Coverage][coveralls-image]][coveralls-url]
7 |
8 | Merge objects using descriptors.
9 |
10 | ```js
11 | var thing = {
12 | get name() {
13 | return 'jon'
14 | }
15 | }
16 |
17 | var animal = {
18 |
19 | }
20 |
21 | merge(animal, thing)
22 |
23 | animal.name === 'jon'
24 | ```
25 |
26 | ## API
27 |
28 | ### merge(destination, source)
29 |
30 | Redefines `destination`'s descriptors with `source`'s.
31 |
32 | ### merge(destination, source, false)
33 |
34 | Defines `source`'s descriptors on `destination` if `destination` does not have
35 | a descriptor by the same name.
36 |
37 | ## License
38 |
39 | [MIT](LICENSE)
40 |
41 | [npm-image]: https://img.shields.io/npm/v/merge-descriptors.svg
42 | [npm-url]: https://npmjs.org/package/merge-descriptors
43 | [travis-image]: https://img.shields.io/travis/component/merge-descriptors/master.svg
44 | [travis-url]: https://travis-ci.org/component/merge-descriptors
45 | [coveralls-image]: https://img.shields.io/coveralls/component/merge-descriptors/master.svg
46 | [coveralls-url]: https://coveralls.io/r/component/merge-descriptors?branch=master
47 | [downloads-image]: https://img.shields.io/npm/dm/merge-descriptors.svg
48 | [downloads-url]: https://npmjs.org/package/merge-descriptors
49 |
--------------------------------------------------------------------------------
/server/node_modules/merge-descriptors/index.js:
--------------------------------------------------------------------------------
1 | /*!
2 | * merge-descriptors
3 | * Copyright(c) 2014 Jonathan Ong
4 | * Copyright(c) 2015 Douglas Christopher Wilson
5 | * MIT Licensed
6 | */
7 |
8 | 'use strict'
9 |
10 | /**
11 | * Module exports.
12 | * @public
13 | */
14 |
15 | module.exports = merge
16 |
17 | /**
18 | * Module variables.
19 | * @private
20 | */
21 |
22 | var hasOwnProperty = Object.prototype.hasOwnProperty
23 |
24 | /**
25 | * Merge the property descriptors of `src` into `dest`
26 | *
27 | * @param {object} dest Object to add descriptors to
28 | * @param {object} src Object to clone descriptors from
29 | * @param {boolean} [redefine=true] Redefine `dest` properties with `src` properties
30 | * @returns {object} Reference to dest
31 | * @public
32 | */
33 |
34 | function merge(dest, src, redefine) {
35 | if (!dest) {
36 | throw new TypeError('argument dest is required')
37 | }
38 |
39 | if (!src) {
40 | throw new TypeError('argument src is required')
41 | }
42 |
43 | if (redefine === undefined) {
44 | // Default to true
45 | redefine = true
46 | }
47 |
48 | Object.getOwnPropertyNames(src).forEach(function forEachOwnPropertyName(name) {
49 | if (!redefine && hasOwnProperty.call(dest, name)) {
50 | // Skip desriptor
51 | return
52 | }
53 |
54 | // Copy descriptor
55 | var descriptor = Object.getOwnPropertyDescriptor(src, name)
56 | Object.defineProperty(dest, name, descriptor)
57 | })
58 |
59 | return dest
60 | }
61 |
--------------------------------------------------------------------------------
/server/node_modules/merge-descriptors/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "_from": "merge-descriptors@1.0.1",
3 | "_id": "merge-descriptors@1.0.1",
4 | "_inBundle": false,
5 | "_integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=",
6 | "_location": "/merge-descriptors",
7 | "_phantomChildren": {},
8 | "_requested": {
9 | "type": "version",
10 | "registry": true,
11 | "raw": "merge-descriptors@1.0.1",
12 | "name": "merge-descriptors",
13 | "escapedName": "merge-descriptors",
14 | "rawSpec": "1.0.1",
15 | "saveSpec": null,
16 | "fetchSpec": "1.0.1"
17 | },
18 | "_requiredBy": [
19 | "/express"
20 | ],
21 | "_resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz",
22 | "_shasum": "b00aaa556dd8b44568150ec9d1b953f3f90cbb61",
23 | "_spec": "merge-descriptors@1.0.1",
24 | "_where": "/Users/stephengrider/workspace/FullstackWorkspace/prod/server/node_modules/express",
25 | "author": {
26 | "name": "Jonathan Ong",
27 | "email": "me@jongleberry.com",
28 | "url": "http://jongleberry.com"
29 | },
30 | "bugs": {
31 | "url": "https://github.com/component/merge-descriptors/issues"
32 | },
33 | "bundleDependencies": false,
34 | "contributors": [
35 | {
36 | "name": "Douglas Christopher Wilson",
37 | "email": "doug@somethingdoug.com"
38 | },
39 | {
40 | "name": "Mike Grabowski",
41 | "email": "grabbou@gmail.com"
42 | }
43 | ],
44 | "deprecated": false,
45 | "description": "Merge objects using descriptors",
46 | "devDependencies": {
47 | "istanbul": "0.4.1",
48 | "mocha": "1.21.5"
49 | },
50 | "files": [
51 | "HISTORY.md",
52 | "LICENSE",
53 | "README.md",
54 | "index.js"
55 | ],
56 | "homepage": "https://github.com/component/merge-descriptors#readme",
57 | "license": "MIT",
58 | "name": "merge-descriptors",
59 | "repository": {
60 | "type": "git",
61 | "url": "git+https://github.com/component/merge-descriptors.git"
62 | },
63 | "scripts": {
64 | "test": "mocha --reporter spec --bail --check-leaks test/",
65 | "test-ci": "istanbul cover node_modules/mocha/bin/_mocha --report lcovonly -- --reporter spec --check-leaks test/",
66 | "test-cov": "istanbul cover node_modules/mocha/bin/_mocha -- --reporter dot --check-leaks test/"
67 | },
68 | "version": "1.0.1"
69 | }
70 |
--------------------------------------------------------------------------------
/server/node_modules/methods/HISTORY.md:
--------------------------------------------------------------------------------
1 | 1.1.2 / 2016-01-17
2 | ==================
3 |
4 | * perf: enable strict mode
5 |
6 | 1.1.1 / 2014-12-30
7 | ==================
8 |
9 | * Improve `browserify` support
10 |
11 | 1.1.0 / 2014-07-05
12 | ==================
13 |
14 | * Add `CONNECT` method
15 |
16 | 1.0.1 / 2014-06-02
17 | ==================
18 |
19 | * Fix module to work with harmony transform
20 |
21 | 1.0.0 / 2014-05-08
22 | ==================
23 |
24 | * Add `PURGE` method
25 |
26 | 0.1.0 / 2013-10-28
27 | ==================
28 |
29 | * Add `http.METHODS` support
30 |
--------------------------------------------------------------------------------
/server/node_modules/methods/LICENSE:
--------------------------------------------------------------------------------
1 | (The MIT License)
2 |
3 | Copyright (c) 2013-2014 TJ Holowaychuk
4 | Copyright (c) 2015-2016 Douglas Christopher Wilson
5 |
6 | Permission is hereby granted, free of charge, to any person obtaining
7 | a copy of this software and associated documentation files (the
8 | 'Software'), to deal in the Software without restriction, including
9 | without limitation the rights to use, copy, modify, merge, publish,
10 | distribute, sublicense, and/or sell copies of the Software, and to
11 | permit persons to whom the Software is furnished to do so, subject to
12 | the following conditions:
13 |
14 | The above copyright notice and this permission notice shall be
15 | included in all copies or substantial portions of the Software.
16 |
17 | THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
18 | EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
19 | MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
20 | IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
21 | CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
22 | TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
23 | SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
24 |
25 |
--------------------------------------------------------------------------------
/server/node_modules/methods/README.md:
--------------------------------------------------------------------------------
1 | # Methods
2 |
3 | [![NPM Version][npm-image]][npm-url]
4 | [![NPM Downloads][downloads-image]][downloads-url]
5 | [![Node.js Version][node-version-image]][node-version-url]
6 | [![Build Status][travis-image]][travis-url]
7 | [![Test Coverage][coveralls-image]][coveralls-url]
8 |
9 | HTTP verbs that Node.js core's HTTP parser supports.
10 |
11 | This module provides an export that is just like `http.METHODS` from Node.js core,
12 | with the following differences:
13 |
14 | * All method names are lower-cased.
15 | * Contains a fallback list of methods for Node.js versions that do not have a
16 | `http.METHODS` export (0.10 and lower).
17 | * Provides the fallback list when using tools like `browserify` without pulling
18 | in the `http` shim module.
19 |
20 | ## Install
21 |
22 | ```bash
23 | $ npm install methods
24 | ```
25 |
26 | ## API
27 |
28 | ```js
29 | var methods = require('methods')
30 | ```
31 |
32 | ### methods
33 |
34 | This is an array of lower-cased method names that Node.js supports. If Node.js
35 | provides the `http.METHODS` export, then this is the same array lower-cased,
36 | otherwise it is a snapshot of the verbs from Node.js 0.10.
37 |
38 | ## License
39 |
40 | [MIT](LICENSE)
41 |
42 | [npm-image]: https://img.shields.io/npm/v/methods.svg?style=flat
43 | [npm-url]: https://npmjs.org/package/methods
44 | [node-version-image]: https://img.shields.io/node/v/methods.svg?style=flat
45 | [node-version-url]: https://nodejs.org/en/download/
46 | [travis-image]: https://img.shields.io/travis/jshttp/methods.svg?style=flat
47 | [travis-url]: https://travis-ci.org/jshttp/methods
48 | [coveralls-image]: https://img.shields.io/coveralls/jshttp/methods.svg?style=flat
49 | [coveralls-url]: https://coveralls.io/r/jshttp/methods?branch=master
50 | [downloads-image]: https://img.shields.io/npm/dm/methods.svg?style=flat
51 | [downloads-url]: https://npmjs.org/package/methods
52 |
--------------------------------------------------------------------------------
/server/node_modules/methods/index.js:
--------------------------------------------------------------------------------
1 | /*!
2 | * methods
3 | * Copyright(c) 2013-2014 TJ Holowaychuk
4 | * Copyright(c) 2015-2016 Douglas Christopher Wilson
5 | * MIT Licensed
6 | */
7 |
8 | 'use strict';
9 |
10 | /**
11 | * Module dependencies.
12 | * @private
13 | */
14 |
15 | var http = require('http');
16 |
17 | /**
18 | * Module exports.
19 | * @public
20 | */
21 |
22 | module.exports = getCurrentNodeMethods() || getBasicNodeMethods();
23 |
24 | /**
25 | * Get the current Node.js methods.
26 | * @private
27 | */
28 |
29 | function getCurrentNodeMethods() {
30 | return http.METHODS && http.METHODS.map(function lowerCaseMethod(method) {
31 | return method.toLowerCase();
32 | });
33 | }
34 |
35 | /**
36 | * Get the "basic" Node.js methods, a snapshot from Node.js 0.10.
37 | * @private
38 | */
39 |
40 | function getBasicNodeMethods() {
41 | return [
42 | 'get',
43 | 'post',
44 | 'put',
45 | 'head',
46 | 'delete',
47 | 'options',
48 | 'trace',
49 | 'copy',
50 | 'lock',
51 | 'mkcol',
52 | 'move',
53 | 'purge',
54 | 'propfind',
55 | 'proppatch',
56 | 'unlock',
57 | 'report',
58 | 'mkactivity',
59 | 'checkout',
60 | 'merge',
61 | 'm-search',
62 | 'notify',
63 | 'subscribe',
64 | 'unsubscribe',
65 | 'patch',
66 | 'search',
67 | 'connect'
68 | ];
69 | }
70 |
--------------------------------------------------------------------------------
/server/node_modules/methods/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "_from": "methods@~1.1.2",
3 | "_id": "methods@1.1.2",
4 | "_inBundle": false,
5 | "_integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=",
6 | "_location": "/methods",
7 | "_phantomChildren": {},
8 | "_requested": {
9 | "type": "range",
10 | "registry": true,
11 | "raw": "methods@~1.1.2",
12 | "name": "methods",
13 | "escapedName": "methods",
14 | "rawSpec": "~1.1.2",
15 | "saveSpec": null,
16 | "fetchSpec": "~1.1.2"
17 | },
18 | "_requiredBy": [
19 | "/express"
20 | ],
21 | "_resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz",
22 | "_shasum": "5529a4d67654134edcc5266656835b0f851afcee",
23 | "_spec": "methods@~1.1.2",
24 | "_where": "/Users/stephengrider/workspace/FullstackWorkspace/prod/server/node_modules/express",
25 | "browser": {
26 | "http": false
27 | },
28 | "bugs": {
29 | "url": "https://github.com/jshttp/methods/issues"
30 | },
31 | "bundleDependencies": false,
32 | "contributors": [
33 | {
34 | "name": "Douglas Christopher Wilson",
35 | "email": "doug@somethingdoug.com"
36 | },
37 | {
38 | "name": "Jonathan Ong",
39 | "email": "me@jongleberry.com",
40 | "url": "http://jongleberry.com"
41 | },
42 | {
43 | "name": "TJ Holowaychuk",
44 | "email": "tj@vision-media.ca",
45 | "url": "http://tjholowaychuk.com"
46 | }
47 | ],
48 | "deprecated": false,
49 | "description": "HTTP methods that node supports",
50 | "devDependencies": {
51 | "istanbul": "0.4.1",
52 | "mocha": "1.21.5"
53 | },
54 | "engines": {
55 | "node": ">= 0.6"
56 | },
57 | "files": [
58 | "index.js",
59 | "HISTORY.md",
60 | "LICENSE"
61 | ],
62 | "homepage": "https://github.com/jshttp/methods#readme",
63 | "keywords": [
64 | "http",
65 | "methods"
66 | ],
67 | "license": "MIT",
68 | "name": "methods",
69 | "repository": {
70 | "type": "git",
71 | "url": "git+https://github.com/jshttp/methods.git"
72 | },
73 | "scripts": {
74 | "test": "mocha --reporter spec --bail --check-leaks test/",
75 | "test-cov": "istanbul cover node_modules/mocha/bin/_mocha -- --reporter dot --check-leaks test/",
76 | "test-travis": "istanbul cover node_modules/mocha/bin/_mocha --report lcovonly -- --reporter spec --check-leaks test/"
77 | },
78 | "version": "1.1.2"
79 | }
80 |
--------------------------------------------------------------------------------
/server/node_modules/mime-db/LICENSE:
--------------------------------------------------------------------------------
1 |
2 | The MIT License (MIT)
3 |
4 | Copyright (c) 2014 Jonathan Ong me@jongleberry.com
5 |
6 | Permission is hereby granted, free of charge, to any person obtaining a copy
7 | of this software and associated documentation files (the "Software"), to deal
8 | in the Software without restriction, including without limitation the rights
9 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
10 | copies of the Software, and to permit persons to whom the Software is
11 | furnished to do so, subject to the following conditions:
12 |
13 | The above copyright notice and this permission notice shall be included in
14 | all copies or substantial portions of the Software.
15 |
16 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
19 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
20 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
21 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
22 | THE SOFTWARE.
23 |
--------------------------------------------------------------------------------
/server/node_modules/mime-db/index.js:
--------------------------------------------------------------------------------
1 | /*!
2 | * mime-db
3 | * Copyright(c) 2014 Jonathan Ong
4 | * MIT Licensed
5 | */
6 |
7 | /**
8 | * Module exports.
9 | */
10 |
11 | module.exports = require('./db.json')
12 |
--------------------------------------------------------------------------------
/server/node_modules/mime-types/LICENSE:
--------------------------------------------------------------------------------
1 | (The MIT License)
2 |
3 | Copyright (c) 2014 Jonathan Ong
4 | Copyright (c) 2015 Douglas Christopher Wilson
5 |
6 | Permission is hereby granted, free of charge, to any person obtaining
7 | a copy of this software and associated documentation files (the
8 | 'Software'), to deal in the Software without restriction, including
9 | without limitation the rights to use, copy, modify, merge, publish,
10 | distribute, sublicense, and/or sell copies of the Software, and to
11 | permit persons to whom the Software is furnished to do so, subject to
12 | the following conditions:
13 |
14 | The above copyright notice and this permission notice shall be
15 | included in all copies or substantial portions of the Software.
16 |
17 | THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
18 | EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
19 | MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
20 | IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
21 | CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
22 | TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
23 | SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
24 |
--------------------------------------------------------------------------------
/server/node_modules/mime/.npmignore:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/StephenGrider/FullstackReactCode/380e5c9b2f06383315217214614c19eb76022b94/server/node_modules/mime/.npmignore
--------------------------------------------------------------------------------
/server/node_modules/mime/LICENSE:
--------------------------------------------------------------------------------
1 | Copyright (c) 2010 Benjamin Thomas, Robert Kieffer
2 |
3 | Permission is hereby granted, free of charge, to any person obtaining a copy
4 | of this software and associated documentation files (the "Software"), to deal
5 | in the Software without restriction, including without limitation the rights
6 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
7 | copies of the Software, and to permit persons to whom the Software is
8 | furnished to do so, subject to the following conditions:
9 |
10 | The above copyright notice and this permission notice shall be included in
11 | all copies or substantial portions of the Software.
12 |
13 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
14 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
15 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
16 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
17 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
18 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
19 | THE SOFTWARE.
20 |
--------------------------------------------------------------------------------
/server/node_modules/mime/build/build.js:
--------------------------------------------------------------------------------
1 | var db = require('mime-db');
2 |
3 | var mapByType = {};
4 | Object.keys(db).forEach(function(key) {
5 | var extensions = db[key].extensions;
6 | if (extensions) {
7 | mapByType[key] = extensions;
8 | }
9 | });
10 |
11 | console.log(JSON.stringify(mapByType));
12 |
--------------------------------------------------------------------------------
/server/node_modules/mime/cli.js:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env node
2 |
3 | var mime = require('./mime.js');
4 | var file = process.argv[2];
5 | var type = mime.lookup(file);
6 |
7 | process.stdout.write(type + '\n');
8 |
9 |
--------------------------------------------------------------------------------
/server/node_modules/mime/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "_from": "mime@1.3.4",
3 | "_id": "mime@1.3.4",
4 | "_inBundle": false,
5 | "_integrity": "sha1-EV+eO2s9rylZmDyzjxSaLUDrXVM=",
6 | "_location": "/mime",
7 | "_phantomChildren": {},
8 | "_requested": {
9 | "type": "version",
10 | "registry": true,
11 | "raw": "mime@1.3.4",
12 | "name": "mime",
13 | "escapedName": "mime",
14 | "rawSpec": "1.3.4",
15 | "saveSpec": null,
16 | "fetchSpec": "1.3.4"
17 | },
18 | "_requiredBy": [
19 | "/send"
20 | ],
21 | "_resolved": "https://registry.npmjs.org/mime/-/mime-1.3.4.tgz",
22 | "_shasum": "115f9e3b6b3daf2959983cb38f149a2d40eb5d53",
23 | "_spec": "mime@1.3.4",
24 | "_where": "/Users/stephengrider/workspace/FullstackWorkspace/prod/server/node_modules/send",
25 | "author": {
26 | "name": "Robert Kieffer",
27 | "email": "robert@broofa.com",
28 | "url": "http://github.com/broofa"
29 | },
30 | "bin": {
31 | "mime": "cli.js"
32 | },
33 | "bugs": {
34 | "url": "https://github.com/broofa/node-mime/issues"
35 | },
36 | "bundleDependencies": false,
37 | "contributors": [
38 | {
39 | "name": "Benjamin Thomas",
40 | "email": "benjamin@benjaminthomas.org",
41 | "url": "http://github.com/bentomas"
42 | }
43 | ],
44 | "dependencies": {},
45 | "deprecated": false,
46 | "description": "A comprehensive library for mime-type mapping",
47 | "devDependencies": {
48 | "mime-db": "^1.2.0"
49 | },
50 | "homepage": "https://github.com/broofa/node-mime#readme",
51 | "keywords": [
52 | "util",
53 | "mime"
54 | ],
55 | "licenses": [
56 | {
57 | "type": "MIT",
58 | "url": "https://raw.github.com/broofa/node-mime/master/LICENSE"
59 | }
60 | ],
61 | "main": "mime.js",
62 | "name": "mime",
63 | "repository": {
64 | "url": "git+https://github.com/broofa/node-mime.git",
65 | "type": "git"
66 | },
67 | "scripts": {
68 | "prepublish": "node build/build.js > types.json",
69 | "test": "node build/test.js"
70 | },
71 | "version": "1.3.4"
72 | }
73 |
--------------------------------------------------------------------------------
/server/node_modules/ms/license.md:
--------------------------------------------------------------------------------
1 | The MIT License (MIT)
2 |
3 | Copyright (c) 2016 Zeit, Inc.
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 | SOFTWARE.
22 |
--------------------------------------------------------------------------------
/server/node_modules/ms/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "_from": "ms@2.0.0",
3 | "_id": "ms@2.0.0",
4 | "_inBundle": false,
5 | "_integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=",
6 | "_location": "/ms",
7 | "_phantomChildren": {},
8 | "_requested": {
9 | "type": "version",
10 | "registry": true,
11 | "raw": "ms@2.0.0",
12 | "name": "ms",
13 | "escapedName": "ms",
14 | "rawSpec": "2.0.0",
15 | "saveSpec": null,
16 | "fetchSpec": "2.0.0"
17 | },
18 | "_requiredBy": [
19 | "/debug",
20 | "/send"
21 | ],
22 | "_resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
23 | "_shasum": "5608aeadfc00be6c2901df5f9861788de0d597c8",
24 | "_spec": "ms@2.0.0",
25 | "_where": "/Users/stephengrider/workspace/FullstackWorkspace/prod/server/node_modules/debug",
26 | "bugs": {
27 | "url": "https://github.com/zeit/ms/issues"
28 | },
29 | "bundleDependencies": false,
30 | "deprecated": false,
31 | "description": "Tiny milisecond conversion utility",
32 | "devDependencies": {
33 | "eslint": "3.19.0",
34 | "expect.js": "0.3.1",
35 | "husky": "0.13.3",
36 | "lint-staged": "3.4.1",
37 | "mocha": "3.4.1"
38 | },
39 | "eslintConfig": {
40 | "extends": "eslint:recommended",
41 | "env": {
42 | "node": true,
43 | "es6": true
44 | }
45 | },
46 | "files": [
47 | "index.js"
48 | ],
49 | "homepage": "https://github.com/zeit/ms#readme",
50 | "license": "MIT",
51 | "lint-staged": {
52 | "*.js": [
53 | "npm run lint",
54 | "prettier --single-quote --write",
55 | "git add"
56 | ]
57 | },
58 | "main": "./index",
59 | "name": "ms",
60 | "repository": {
61 | "type": "git",
62 | "url": "git+https://github.com/zeit/ms.git"
63 | },
64 | "scripts": {
65 | "lint": "eslint lib/* bin/*",
66 | "precommit": "lint-staged",
67 | "test": "mocha tests.js"
68 | },
69 | "version": "2.0.0"
70 | }
71 |
--------------------------------------------------------------------------------
/server/node_modules/ms/readme.md:
--------------------------------------------------------------------------------
1 | # ms
2 |
3 | [](https://travis-ci.org/zeit/ms)
4 | [](https://zeit.chat/)
5 |
6 | Use this package to easily convert various time formats to milliseconds.
7 |
8 | ## Examples
9 |
10 | ```js
11 | ms('2 days') // 172800000
12 | ms('1d') // 86400000
13 | ms('10h') // 36000000
14 | ms('2.5 hrs') // 9000000
15 | ms('2h') // 7200000
16 | ms('1m') // 60000
17 | ms('5s') // 5000
18 | ms('1y') // 31557600000
19 | ms('100') // 100
20 | ```
21 |
22 | ### Convert from milliseconds
23 |
24 | ```js
25 | ms(60000) // "1m"
26 | ms(2 * 60000) // "2m"
27 | ms(ms('10 hours')) // "10h"
28 | ```
29 |
30 | ### Time format written-out
31 |
32 | ```js
33 | ms(60000, { long: true }) // "1 minute"
34 | ms(2 * 60000, { long: true }) // "2 minutes"
35 | ms(ms('10 hours'), { long: true }) // "10 hours"
36 | ```
37 |
38 | ## Features
39 |
40 | - Works both in [node](https://nodejs.org) and in the browser.
41 | - If a number is supplied to `ms`, a string with a unit is returned.
42 | - If a string that contains the number is supplied, it returns it as a number (e.g.: it returns `100` for `'100'`).
43 | - If you pass a string with a number and a valid unit, the number of equivalent ms is returned.
44 |
45 | ## Caught a bug?
46 |
47 | 1. [Fork](https://help.github.com/articles/fork-a-repo/) this repository to your own GitHub account and then [clone](https://help.github.com/articles/cloning-a-repository/) it to your local device
48 | 2. Link the package to the global module directory: `npm link`
49 | 3. Within the module you want to test your local development instance of ms, just link it to the dependencies: `npm link ms`. Instead of the default one from npm, node will now use your clone of ms!
50 |
51 | As always, you can run the tests using: `npm test`
52 |
--------------------------------------------------------------------------------
/server/node_modules/negotiator/LICENSE:
--------------------------------------------------------------------------------
1 | (The MIT License)
2 |
3 | Copyright (c) 2012-2014 Federico Romero
4 | Copyright (c) 2012-2014 Isaac Z. Schlueter
5 | Copyright (c) 2014-2015 Douglas Christopher Wilson
6 |
7 | Permission is hereby granted, free of charge, to any person obtaining
8 | a copy of this software and associated documentation files (the
9 | 'Software'), to deal in the Software without restriction, including
10 | without limitation the rights to use, copy, modify, merge, publish,
11 | distribute, sublicense, and/or sell copies of the Software, and to
12 | permit persons to whom the Software is furnished to do so, subject to
13 | the following conditions:
14 |
15 | The above copyright notice and this permission notice shall be
16 | included in all copies or substantial portions of the Software.
17 |
18 | THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
19 | EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
20 | MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
21 | IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
22 | CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
23 | TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
24 | SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
25 |
--------------------------------------------------------------------------------
/server/node_modules/on-finished/HISTORY.md:
--------------------------------------------------------------------------------
1 | 2.3.0 / 2015-05-26
2 | ==================
3 |
4 | * Add defined behavior for HTTP `CONNECT` requests
5 | * Add defined behavior for HTTP `Upgrade` requests
6 | * deps: ee-first@1.1.1
7 |
8 | 2.2.1 / 2015-04-22
9 | ==================
10 |
11 | * Fix `isFinished(req)` when data buffered
12 |
13 | 2.2.0 / 2014-12-22
14 | ==================
15 |
16 | * Add message object to callback arguments
17 |
18 | 2.1.1 / 2014-10-22
19 | ==================
20 |
21 | * Fix handling of pipelined requests
22 |
23 | 2.1.0 / 2014-08-16
24 | ==================
25 |
26 | * Check if `socket` is detached
27 | * Return `undefined` for `isFinished` if state unknown
28 |
29 | 2.0.0 / 2014-08-16
30 | ==================
31 |
32 | * Add `isFinished` function
33 | * Move to `jshttp` organization
34 | * Remove support for plain socket argument
35 | * Rename to `on-finished`
36 | * Support both `req` and `res` as arguments
37 | * deps: ee-first@1.0.5
38 |
39 | 1.2.2 / 2014-06-10
40 | ==================
41 |
42 | * Reduce listeners added to emitters
43 | - avoids "event emitter leak" warnings when used multiple times on same request
44 |
45 | 1.2.1 / 2014-06-08
46 | ==================
47 |
48 | * Fix returned value when already finished
49 |
50 | 1.2.0 / 2014-06-05
51 | ==================
52 |
53 | * Call callback when called on already-finished socket
54 |
55 | 1.1.4 / 2014-05-27
56 | ==================
57 |
58 | * Support node.js 0.8
59 |
60 | 1.1.3 / 2014-04-30
61 | ==================
62 |
63 | * Make sure errors passed as instanceof `Error`
64 |
65 | 1.1.2 / 2014-04-18
66 | ==================
67 |
68 | * Default the `socket` to passed-in object
69 |
70 | 1.1.1 / 2014-01-16
71 | ==================
72 |
73 | * Rename module to `finished`
74 |
75 | 1.1.0 / 2013-12-25
76 | ==================
77 |
78 | * Call callback when called on already-errored socket
79 |
80 | 1.0.1 / 2013-12-20
81 | ==================
82 |
83 | * Actually pass the error to the callback
84 |
85 | 1.0.0 / 2013-12-20
86 | ==================
87 |
88 | * Initial release
89 |
--------------------------------------------------------------------------------
/server/node_modules/on-finished/LICENSE:
--------------------------------------------------------------------------------
1 | (The MIT License)
2 |
3 | Copyright (c) 2013 Jonathan Ong
4 | Copyright (c) 2014 Douglas Christopher Wilson
5 |
6 | Permission is hereby granted, free of charge, to any person obtaining
7 | a copy of this software and associated documentation files (the
8 | 'Software'), to deal in the Software without restriction, including
9 | without limitation the rights to use, copy, modify, merge, publish,
10 | distribute, sublicense, and/or sell copies of the Software, and to
11 | permit persons to whom the Software is furnished to do so, subject to
12 | the following conditions:
13 |
14 | The above copyright notice and this permission notice shall be
15 | included in all copies or substantial portions of the Software.
16 |
17 | THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
18 | EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
19 | MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
20 | IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
21 | CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
22 | TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
23 | SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
24 |
--------------------------------------------------------------------------------
/server/node_modules/on-finished/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "_from": "on-finished@~2.3.0",
3 | "_id": "on-finished@2.3.0",
4 | "_inBundle": false,
5 | "_integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=",
6 | "_location": "/on-finished",
7 | "_phantomChildren": {},
8 | "_requested": {
9 | "type": "range",
10 | "registry": true,
11 | "raw": "on-finished@~2.3.0",
12 | "name": "on-finished",
13 | "escapedName": "on-finished",
14 | "rawSpec": "~2.3.0",
15 | "saveSpec": null,
16 | "fetchSpec": "~2.3.0"
17 | },
18 | "_requiredBy": [
19 | "/express",
20 | "/finalhandler",
21 | "/send"
22 | ],
23 | "_resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz",
24 | "_shasum": "20f1336481b083cd75337992a16971aa2d906947",
25 | "_spec": "on-finished@~2.3.0",
26 | "_where": "/Users/stephengrider/workspace/FullstackWorkspace/prod/server/node_modules/express",
27 | "bugs": {
28 | "url": "https://github.com/jshttp/on-finished/issues"
29 | },
30 | "bundleDependencies": false,
31 | "contributors": [
32 | {
33 | "name": "Douglas Christopher Wilson",
34 | "email": "doug@somethingdoug.com"
35 | },
36 | {
37 | "name": "Jonathan Ong",
38 | "email": "me@jongleberry.com",
39 | "url": "http://jongleberry.com"
40 | }
41 | ],
42 | "dependencies": {
43 | "ee-first": "1.1.1"
44 | },
45 | "deprecated": false,
46 | "description": "Execute a callback when a request closes, finishes, or errors",
47 | "devDependencies": {
48 | "istanbul": "0.3.9",
49 | "mocha": "2.2.5"
50 | },
51 | "engines": {
52 | "node": ">= 0.8"
53 | },
54 | "files": [
55 | "HISTORY.md",
56 | "LICENSE",
57 | "index.js"
58 | ],
59 | "homepage": "https://github.com/jshttp/on-finished#readme",
60 | "license": "MIT",
61 | "name": "on-finished",
62 | "repository": {
63 | "type": "git",
64 | "url": "git+https://github.com/jshttp/on-finished.git"
65 | },
66 | "scripts": {
67 | "test": "mocha --reporter spec --bail --check-leaks test/",
68 | "test-cov": "istanbul cover node_modules/mocha/bin/_mocha -- --reporter dot --check-leaks test/",
69 | "test-travis": "istanbul cover node_modules/mocha/bin/_mocha --report lcovonly -- --reporter spec --check-leaks test/"
70 | },
71 | "version": "2.3.0"
72 | }
73 |
--------------------------------------------------------------------------------
/server/node_modules/parseurl/HISTORY.md:
--------------------------------------------------------------------------------
1 | 1.3.1 / 2016-01-17
2 | ==================
3 |
4 | * perf: enable strict mode
5 |
6 | 1.3.0 / 2014-08-09
7 | ==================
8 |
9 | * Add `parseurl.original` for parsing `req.originalUrl` with fallback
10 | * Return `undefined` if `req.url` is `undefined`
11 |
12 | 1.2.0 / 2014-07-21
13 | ==================
14 |
15 | * Cache URLs based on original value
16 | * Remove no-longer-needed URL mis-parse work-around
17 | * Simplify the "fast-path" `RegExp`
18 |
19 | 1.1.3 / 2014-07-08
20 | ==================
21 |
22 | * Fix typo
23 |
24 | 1.1.2 / 2014-07-08
25 | ==================
26 |
27 | * Seriously fix Node.js 0.8 compatibility
28 |
29 | 1.1.1 / 2014-07-08
30 | ==================
31 |
32 | * Fix Node.js 0.8 compatibility
33 |
34 | 1.1.0 / 2014-07-08
35 | ==================
36 |
37 | * Incorporate URL href-only parse fast-path
38 |
39 | 1.0.1 / 2014-03-08
40 | ==================
41 |
42 | * Add missing `require`
43 |
44 | 1.0.0 / 2014-03-08
45 | ==================
46 |
47 | * Genesis from `connect`
48 |
--------------------------------------------------------------------------------
/server/node_modules/parseurl/LICENSE:
--------------------------------------------------------------------------------
1 |
2 | (The MIT License)
3 |
4 | Copyright (c) 2014 Jonathan Ong
5 | Copyright (c) 2014 Douglas Christopher Wilson
6 |
7 | Permission is hereby granted, free of charge, to any person obtaining
8 | a copy of this software and associated documentation files (the
9 | 'Software'), to deal in the Software without restriction, including
10 | without limitation the rights to use, copy, modify, merge, publish,
11 | distribute, sublicense, and/or sell copies of the Software, and to
12 | permit persons to whom the Software is furnished to do so, subject to
13 | the following conditions:
14 |
15 | The above copyright notice and this permission notice shall be
16 | included in all copies or substantial portions of the Software.
17 |
18 | THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
19 | EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
20 | MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
21 | IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
22 | CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
23 | TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
24 | SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
25 |
--------------------------------------------------------------------------------
/server/node_modules/parseurl/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "_from": "parseurl@~1.3.1",
3 | "_id": "parseurl@1.3.1",
4 | "_inBundle": false,
5 | "_integrity": "sha1-yKuMkiO6NIiKpkopeyiFO+wY2lY=",
6 | "_location": "/parseurl",
7 | "_phantomChildren": {},
8 | "_requested": {
9 | "type": "range",
10 | "registry": true,
11 | "raw": "parseurl@~1.3.1",
12 | "name": "parseurl",
13 | "escapedName": "parseurl",
14 | "rawSpec": "~1.3.1",
15 | "saveSpec": null,
16 | "fetchSpec": "~1.3.1"
17 | },
18 | "_requiredBy": [
19 | "/express",
20 | "/finalhandler",
21 | "/serve-static"
22 | ],
23 | "_resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.1.tgz",
24 | "_shasum": "c8ab8c9223ba34888aa64a297b28853bec18da56",
25 | "_spec": "parseurl@~1.3.1",
26 | "_where": "/Users/stephengrider/workspace/FullstackWorkspace/prod/server/node_modules/express",
27 | "author": {
28 | "name": "Jonathan Ong",
29 | "email": "me@jongleberry.com",
30 | "url": "http://jongleberry.com"
31 | },
32 | "bugs": {
33 | "url": "https://github.com/pillarjs/parseurl/issues"
34 | },
35 | "bundleDependencies": false,
36 | "contributors": [
37 | {
38 | "name": "Douglas Christopher Wilson",
39 | "email": "doug@somethingdoug.com"
40 | }
41 | ],
42 | "deprecated": false,
43 | "description": "parse a url with memoization",
44 | "devDependencies": {
45 | "beautify-benchmark": "0.2.4",
46 | "benchmark": "2.0.0",
47 | "fast-url-parser": "1.1.3",
48 | "istanbul": "0.4.2",
49 | "mocha": "~1.21.5"
50 | },
51 | "engines": {
52 | "node": ">= 0.8"
53 | },
54 | "files": [
55 | "LICENSE",
56 | "HISTORY.md",
57 | "README.md",
58 | "index.js"
59 | ],
60 | "homepage": "https://github.com/pillarjs/parseurl#readme",
61 | "license": "MIT",
62 | "name": "parseurl",
63 | "repository": {
64 | "type": "git",
65 | "url": "git+https://github.com/pillarjs/parseurl.git"
66 | },
67 | "scripts": {
68 | "bench": "node benchmark/index.js",
69 | "test": "mocha --check-leaks --bail --reporter spec test/",
70 | "test-cov": "istanbul cover node_modules/mocha/bin/_mocha -- --check-leaks --reporter dot test/",
71 | "test-travis": "istanbul cover node_modules/mocha/bin/_mocha --report lcovonly -- --check-leaks --reporter spec test/"
72 | },
73 | "version": "1.3.1"
74 | }
75 |
--------------------------------------------------------------------------------
/server/node_modules/path-to-regexp/History.md:
--------------------------------------------------------------------------------
1 | 0.1.7 / 2015-07-28
2 | ==================
3 |
4 | * Fixed regression with escaped round brackets and matching groups.
5 |
6 | 0.1.6 / 2015-06-19
7 | ==================
8 |
9 | * Replace `index` feature by outputting all parameters, unnamed and named.
10 |
11 | 0.1.5 / 2015-05-08
12 | ==================
13 |
14 | * Add an index property for position in match result.
15 |
16 | 0.1.4 / 2015-03-05
17 | ==================
18 |
19 | * Add license information
20 |
21 | 0.1.3 / 2014-07-06
22 | ==================
23 |
24 | * Better array support
25 | * Improved support for trailing slash in non-ending mode
26 |
27 | 0.1.0 / 2014-03-06
28 | ==================
29 |
30 | * add options.end
31 |
32 | 0.0.2 / 2013-02-10
33 | ==================
34 |
35 | * Update to match current express
36 | * add .license property to component.json
37 |
--------------------------------------------------------------------------------
/server/node_modules/path-to-regexp/LICENSE:
--------------------------------------------------------------------------------
1 | The MIT License (MIT)
2 |
3 | Copyright (c) 2014 Blake Embrey (hello@blakeembrey.com)
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in
13 | all copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
21 | THE SOFTWARE.
22 |
--------------------------------------------------------------------------------
/server/node_modules/path-to-regexp/Readme.md:
--------------------------------------------------------------------------------
1 | # Path-to-RegExp
2 |
3 | Turn an Express-style path string such as `/user/:name` into a regular expression.
4 |
5 | **Note:** This is a legacy branch. You should upgrade to `1.x`.
6 |
7 | ## Usage
8 |
9 | ```javascript
10 | var pathToRegexp = require('path-to-regexp');
11 | ```
12 |
13 | ### pathToRegexp(path, keys, options)
14 |
15 | - **path** A string in the express format, an array of such strings, or a regular expression
16 | - **keys** An array to be populated with the keys present in the url. Once the function completes, this will be an array of strings.
17 | - **options**
18 | - **options.sensitive** Defaults to false, set this to true to make routes case sensitive
19 | - **options.strict** Defaults to false, set this to true to make the trailing slash matter.
20 | - **options.end** Defaults to true, set this to false to only match the prefix of the URL.
21 |
22 | ```javascript
23 | var keys = [];
24 | var exp = pathToRegexp('/foo/:bar', keys);
25 | //keys = ['bar']
26 | //exp = /^\/foo\/(?:([^\/]+?))\/?$/i
27 | ```
28 |
29 | ## Live Demo
30 |
31 | You can see a live demo of this library in use at [express-route-tester](http://forbeslindesay.github.com/express-route-tester/).
32 |
33 | ## License
34 |
35 | MIT
36 |
--------------------------------------------------------------------------------
/server/node_modules/path-to-regexp/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "_from": "path-to-regexp@0.1.7",
3 | "_id": "path-to-regexp@0.1.7",
4 | "_inBundle": false,
5 | "_integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=",
6 | "_location": "/path-to-regexp",
7 | "_phantomChildren": {},
8 | "_requested": {
9 | "type": "version",
10 | "registry": true,
11 | "raw": "path-to-regexp@0.1.7",
12 | "name": "path-to-regexp",
13 | "escapedName": "path-to-regexp",
14 | "rawSpec": "0.1.7",
15 | "saveSpec": null,
16 | "fetchSpec": "0.1.7"
17 | },
18 | "_requiredBy": [
19 | "/express"
20 | ],
21 | "_resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz",
22 | "_shasum": "df604178005f522f15eb4490e7247a1bfaa67f8c",
23 | "_spec": "path-to-regexp@0.1.7",
24 | "_where": "/Users/stephengrider/workspace/FullstackWorkspace/prod/server/node_modules/express",
25 | "bugs": {
26 | "url": "https://github.com/component/path-to-regexp/issues"
27 | },
28 | "bundleDependencies": false,
29 | "component": {
30 | "scripts": {
31 | "path-to-regexp": "index.js"
32 | }
33 | },
34 | "deprecated": false,
35 | "description": "Express style path to RegExp utility",
36 | "devDependencies": {
37 | "istanbul": "^0.2.6",
38 | "mocha": "^1.17.1"
39 | },
40 | "files": [
41 | "index.js",
42 | "LICENSE"
43 | ],
44 | "homepage": "https://github.com/component/path-to-regexp#readme",
45 | "keywords": [
46 | "express",
47 | "regexp"
48 | ],
49 | "license": "MIT",
50 | "name": "path-to-regexp",
51 | "repository": {
52 | "type": "git",
53 | "url": "git+https://github.com/component/path-to-regexp.git"
54 | },
55 | "scripts": {
56 | "test": "istanbul cover _mocha -- -R spec"
57 | },
58 | "version": "0.1.7"
59 | }
60 |
--------------------------------------------------------------------------------
/server/node_modules/proxy-addr/LICENSE:
--------------------------------------------------------------------------------
1 | (The MIT License)
2 |
3 | Copyright (c) 2014-2016 Douglas Christopher Wilson
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining
6 | a copy of this software and associated documentation files (the
7 | 'Software'), to deal in the Software without restriction, including
8 | without limitation the rights to use, copy, modify, merge, publish,
9 | distribute, sublicense, and/or sell copies of the Software, and to
10 | permit persons to whom the Software is furnished to do so, subject to
11 | the following conditions:
12 |
13 | The above copyright notice and this permission notice shall be
14 | included in all copies or substantial portions of the Software.
15 |
16 | THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
17 | EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
18 | MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
19 | IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
20 | CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
21 | TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
22 | SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
23 |
--------------------------------------------------------------------------------
/server/node_modules/proxy-addr/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "_from": "proxy-addr@~1.1.4",
3 | "_id": "proxy-addr@1.1.4",
4 | "_inBundle": false,
5 | "_integrity": "sha1-J+VF9pYKRKYn2bREZ+NcG2tM4vM=",
6 | "_location": "/proxy-addr",
7 | "_phantomChildren": {},
8 | "_requested": {
9 | "type": "range",
10 | "registry": true,
11 | "raw": "proxy-addr@~1.1.4",
12 | "name": "proxy-addr",
13 | "escapedName": "proxy-addr",
14 | "rawSpec": "~1.1.4",
15 | "saveSpec": null,
16 | "fetchSpec": "~1.1.4"
17 | },
18 | "_requiredBy": [
19 | "/express"
20 | ],
21 | "_resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-1.1.4.tgz",
22 | "_shasum": "27e545f6960a44a627d9b44467e35c1b6b4ce2f3",
23 | "_spec": "proxy-addr@~1.1.4",
24 | "_where": "/Users/stephengrider/workspace/FullstackWorkspace/prod/server/node_modules/express",
25 | "author": {
26 | "name": "Douglas Christopher Wilson",
27 | "email": "doug@somethingdoug.com"
28 | },
29 | "bugs": {
30 | "url": "https://github.com/jshttp/proxy-addr/issues"
31 | },
32 | "bundleDependencies": false,
33 | "dependencies": {
34 | "forwarded": "~0.1.0",
35 | "ipaddr.js": "1.3.0"
36 | },
37 | "deprecated": false,
38 | "description": "Determine address of proxied request",
39 | "devDependencies": {
40 | "beautify-benchmark": "0.2.4",
41 | "benchmark": "2.1.3",
42 | "istanbul": "0.4.5",
43 | "mocha": "~1.21.5"
44 | },
45 | "engines": {
46 | "node": ">= 0.6"
47 | },
48 | "files": [
49 | "LICENSE",
50 | "HISTORY.md",
51 | "README.md",
52 | "index.js"
53 | ],
54 | "homepage": "https://github.com/jshttp/proxy-addr#readme",
55 | "keywords": [
56 | "ip",
57 | "proxy",
58 | "x-forwarded-for"
59 | ],
60 | "license": "MIT",
61 | "name": "proxy-addr",
62 | "repository": {
63 | "type": "git",
64 | "url": "git+https://github.com/jshttp/proxy-addr.git"
65 | },
66 | "scripts": {
67 | "bench": "node benchmark/index.js",
68 | "test": "mocha --reporter spec --bail --check-leaks test/",
69 | "test-cov": "istanbul cover node_modules/mocha/bin/_mocha -- --reporter dot --check-leaks test/",
70 | "test-travis": "istanbul cover node_modules/mocha/bin/_mocha --report lcovonly -- --reporter spec --check-leaks test/"
71 | },
72 | "version": "1.1.4"
73 | }
74 |
--------------------------------------------------------------------------------
/server/node_modules/qs/.eslintignore:
--------------------------------------------------------------------------------
1 | dist
2 |
--------------------------------------------------------------------------------
/server/node_modules/qs/.eslintrc:
--------------------------------------------------------------------------------
1 | {
2 | "root": true,
3 |
4 | "extends": "@ljharb",
5 |
6 | "rules": {
7 | "complexity": [2, 26],
8 | "consistent-return": 1,
9 | "id-length": [2, { "min": 1, "max": 25, "properties": "never" }],
10 | "indent": [2, 4],
11 | "max-params": [2, 12],
12 | "max-statements": [2, 43],
13 | "no-continue": 1,
14 | "no-magic-numbers": 0,
15 | "no-restricted-syntax": [2, "BreakStatement", "DebuggerStatement", "ForInStatement", "LabeledStatement", "WithStatement"],
16 | "operator-linebreak": [2, "after"],
17 | }
18 | }
19 |
--------------------------------------------------------------------------------
/server/node_modules/qs/LICENSE:
--------------------------------------------------------------------------------
1 | Copyright (c) 2014 Nathan LaFreniere and other contributors.
2 | All rights reserved.
3 |
4 | Redistribution and use in source and binary forms, with or without
5 | modification, are permitted provided that the following conditions are met:
6 | * Redistributions of source code must retain the above copyright
7 | notice, this list of conditions and the following disclaimer.
8 | * Redistributions in binary form must reproduce the above copyright
9 | notice, this list of conditions and the following disclaimer in the
10 | documentation and/or other materials provided with the distribution.
11 | * The names of any contributors may not be used to endorse or promote
12 | products derived from this software without specific prior written
13 | permission.
14 |
15 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
16 | ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
17 | WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
18 | DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS AND CONTRIBUTORS BE LIABLE FOR ANY
19 | DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
20 | (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
21 | LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
22 | ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
23 | (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
24 | SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
25 |
26 | * * *
27 |
28 | The complete list of contributors can be found at: https://github.com/hapijs/qs/graphs/contributors
29 |
--------------------------------------------------------------------------------
/server/node_modules/qs/lib/formats.js:
--------------------------------------------------------------------------------
1 | 'use strict';
2 |
3 | var replace = String.prototype.replace;
4 | var percentTwenties = /%20/g;
5 |
6 | module.exports = {
7 | 'default': 'RFC3986',
8 | formatters: {
9 | RFC1738: function (value) {
10 | return replace.call(value, percentTwenties, '+');
11 | },
12 | RFC3986: function (value) {
13 | return value;
14 | }
15 | },
16 | RFC1738: 'RFC1738',
17 | RFC3986: 'RFC3986'
18 | };
19 |
--------------------------------------------------------------------------------
/server/node_modules/qs/lib/index.js:
--------------------------------------------------------------------------------
1 | 'use strict';
2 |
3 | var stringify = require('./stringify');
4 | var parse = require('./parse');
5 | var formats = require('./formats');
6 |
7 | module.exports = {
8 | formats: formats,
9 | parse: parse,
10 | stringify: stringify
11 | };
12 |
--------------------------------------------------------------------------------
/server/node_modules/qs/test/.eslintrc:
--------------------------------------------------------------------------------
1 | {
2 | "rules": {
3 | "consistent-return": 2,
4 | "max-lines": 0,
5 | "max-nested-callbacks": [2, 3],
6 | "max-statements": 0,
7 | "no-extend-native": 0,
8 | "no-magic-numbers": 0,
9 | "sort-keys": 0
10 | }
11 | }
12 |
--------------------------------------------------------------------------------
/server/node_modules/qs/test/index.js:
--------------------------------------------------------------------------------
1 | 'use strict';
2 |
3 | require('./parse');
4 |
5 | require('./stringify');
6 |
7 | require('./utils');
8 |
--------------------------------------------------------------------------------
/server/node_modules/qs/test/utils.js:
--------------------------------------------------------------------------------
1 | 'use strict';
2 |
3 | var test = require('tape');
4 | var utils = require('../lib/utils');
5 |
6 | test('merge()', function (t) {
7 | t.deepEqual(utils.merge({ a: 'b' }, { a: 'c' }), { a: ['b', 'c'] }, 'merges two objects with the same key');
8 |
9 | var oneMerged = utils.merge({ foo: 'bar' }, { foo: { first: '123' } });
10 | t.deepEqual(oneMerged, { foo: ['bar', { first: '123' }] }, 'merges a standalone and an object into an array');
11 |
12 | var twoMerged = utils.merge({ foo: ['bar', { first: '123' }] }, { foo: { second: '456' } });
13 | t.deepEqual(twoMerged, { foo: { 0: 'bar', 1: { first: '123' }, second: '456' } }, 'merges a standalone and two objects into an array');
14 |
15 | var sandwiched = utils.merge({ foo: ['bar', { first: '123', second: '456' }] }, { foo: 'baz' });
16 | t.deepEqual(sandwiched, { foo: ['bar', { first: '123', second: '456' }, 'baz'] }, 'merges an object sandwiched by two standalones into an array');
17 |
18 | var nestedArrays = utils.merge({ foo: ['baz'] }, { foo: ['bar', 'xyzzy'] });
19 | t.deepEqual(nestedArrays, { foo: ['baz', 'bar', 'xyzzy'] });
20 |
21 | t.end();
22 | });
23 |
--------------------------------------------------------------------------------
/server/node_modules/range-parser/HISTORY.md:
--------------------------------------------------------------------------------
1 | 1.2.0 / 2016-06-01
2 | ==================
3 |
4 | * Add `combine` option to combine overlapping ranges
5 |
6 | 1.1.0 / 2016-05-13
7 | ==================
8 |
9 | * Fix incorrectly returning -1 when there is at least one valid range
10 | * perf: remove internal function
11 |
12 | 1.0.3 / 2015-10-29
13 | ==================
14 |
15 | * perf: enable strict mode
16 |
17 | 1.0.2 / 2014-09-08
18 | ==================
19 |
20 | * Support Node.js 0.6
21 |
22 | 1.0.1 / 2014-09-07
23 | ==================
24 |
25 | * Move repository to jshttp
26 |
27 | 1.0.0 / 2013-12-11
28 | ==================
29 |
30 | * Add repository to package.json
31 | * Add MIT license
32 |
33 | 0.0.4 / 2012-06-17
34 | ==================
35 |
36 | * Change ret -1 for unsatisfiable and -2 when invalid
37 |
38 | 0.0.3 / 2012-06-17
39 | ==================
40 |
41 | * Fix last-byte-pos default to len - 1
42 |
43 | 0.0.2 / 2012-06-14
44 | ==================
45 |
46 | * Add `.type`
47 |
48 | 0.0.1 / 2012-06-11
49 | ==================
50 |
51 | * Initial release
52 |
--------------------------------------------------------------------------------
/server/node_modules/range-parser/LICENSE:
--------------------------------------------------------------------------------
1 | (The MIT License)
2 |
3 | Copyright (c) 2012-2014 TJ Holowaychuk
4 | Copyright (c) 2015-2016 Douglas Christopher Wilson [
57 | // { start: 0, end: 10 },
58 | // { start: 50, end: 60 }
59 | // ]
60 | ```
61 |
62 | ## License
63 |
64 | [MIT](LICENSE)
65 |
66 | [npm-image]: https://img.shields.io/npm/v/range-parser.svg
67 | [npm-url]: https://npmjs.org/package/range-parser
68 | [node-version-image]: https://img.shields.io/node/v/range-parser.svg
69 | [node-version-url]: https://nodejs.org/endownload
70 | [travis-image]: https://img.shields.io/travis/jshttp/range-parser.svg
71 | [travis-url]: https://travis-ci.org/jshttp/range-parser
72 | [coveralls-image]: https://img.shields.io/coveralls/jshttp/range-parser.svg
73 | [coveralls-url]: https://coveralls.io/r/jshttp/range-parser
74 | [downloads-image]: https://img.shields.io/npm/dm/range-parser.svg
75 | [downloads-url]: https://npmjs.org/package/range-parser
76 |
--------------------------------------------------------------------------------
/server/node_modules/send/LICENSE:
--------------------------------------------------------------------------------
1 | (The MIT License)
2 |
3 | Copyright (c) 2012 TJ Holowaychuk
4 | Copyright (c) 2014-2016 Douglas Christopher Wilson
5 |
6 | Permission is hereby granted, free of charge, to any person obtaining
7 | a copy of this software and associated documentation files (the
8 | 'Software'), to deal in the Software without restriction, including
9 | without limitation the rights to use, copy, modify, merge, publish,
10 | distribute, sublicense, and/or sell copies of the Software, and to
11 | permit persons to whom the Software is furnished to do so, subject to
12 | the following conditions:
13 |
14 | The above copyright notice and this permission notice shall be
15 | included in all copies or substantial portions of the Software.
16 |
17 | THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
18 | EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
19 | MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
20 | IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
21 | CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
22 | TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
23 | SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
24 |
--------------------------------------------------------------------------------
/server/node_modules/serve-static/LICENSE:
--------------------------------------------------------------------------------
1 | (The MIT License)
2 |
3 | Copyright (c) 2010 Sencha Inc.
4 | Copyright (c) 2011 LearnBoost
5 | Copyright (c) 2011 TJ Holowaychuk
6 | Copyright (c) 2014-2016 Douglas Christopher Wilson
7 |
8 | Permission is hereby granted, free of charge, to any person obtaining
9 | a copy of this software and associated documentation files (the
10 | 'Software'), to deal in the Software without restriction, including
11 | without limitation the rights to use, copy, modify, merge, publish,
12 | distribute, sublicense, and/or sell copies of the Software, and to
13 | permit persons to whom the Software is furnished to do so, subject to
14 | the following conditions:
15 |
16 | The above copyright notice and this permission notice shall be
17 | included in all copies or substantial portions of the Software.
18 |
19 | THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
20 | EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
21 | MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
22 | IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
23 | CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
24 | TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
25 | SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
26 |
--------------------------------------------------------------------------------
/server/node_modules/setprototypeof/LICENSE:
--------------------------------------------------------------------------------
1 | Copyright (c) 2015, Wes Todd
2 |
3 | Permission to use, copy, modify, and/or distribute this software for any
4 | purpose with or without fee is hereby granted, provided that the above
5 | copyright notice and this permission notice appear in all copies.
6 |
7 | THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
8 | WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
9 | MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
10 | SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
11 | WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION
12 | OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
13 | CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
14 |
--------------------------------------------------------------------------------
/server/node_modules/setprototypeof/README.md:
--------------------------------------------------------------------------------
1 | # Polyfill for `Object.setPrototypeOf`
2 |
3 | A simple cross platform implementation to set the prototype of an instianted object. Supports all modern browsers and at least back to IE8.
4 |
5 | ## Usage:
6 |
7 | ```
8 | $ npm install --save setprototypeof
9 | ```
10 |
11 | ```javascript
12 | var setPrototypeOf = require('setprototypeof');
13 |
14 | var obj = {};
15 | setPrototypeOf(obj, {
16 | foo: function() {
17 | return 'bar';
18 | }
19 | });
20 | obj.foo(); // bar
21 | ```
22 |
--------------------------------------------------------------------------------
/server/node_modules/setprototypeof/index.js:
--------------------------------------------------------------------------------
1 | module.exports = Object.setPrototypeOf || ({__proto__:[]} instanceof Array ? setProtoOf : mixinProperties);
2 |
3 | function setProtoOf(obj, proto) {
4 | obj.__proto__ = proto;
5 | return obj;
6 | }
7 |
8 | function mixinProperties(obj, proto) {
9 | for (var prop in proto) {
10 | if (!obj.hasOwnProperty(prop)) {
11 | obj[prop] = proto[prop];
12 | }
13 | }
14 | return obj;
15 | }
16 |
--------------------------------------------------------------------------------
/server/node_modules/setprototypeof/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "_from": "setprototypeof@1.0.3",
3 | "_id": "setprototypeof@1.0.3",
4 | "_inBundle": false,
5 | "_integrity": "sha1-ZlZ+NwQ+608E2RvWWMDL77VbjgQ=",
6 | "_location": "/setprototypeof",
7 | "_phantomChildren": {},
8 | "_requested": {
9 | "type": "version",
10 | "registry": true,
11 | "raw": "setprototypeof@1.0.3",
12 | "name": "setprototypeof",
13 | "escapedName": "setprototypeof",
14 | "rawSpec": "1.0.3",
15 | "saveSpec": null,
16 | "fetchSpec": "1.0.3"
17 | },
18 | "_requiredBy": [
19 | "/express",
20 | "/http-errors"
21 | ],
22 | "_resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.0.3.tgz",
23 | "_shasum": "66567e37043eeb4f04d91bd658c0cbefb55b8e04",
24 | "_spec": "setprototypeof@1.0.3",
25 | "_where": "/Users/stephengrider/workspace/FullstackWorkspace/prod/server/node_modules/express",
26 | "author": {
27 | "name": "Wes Todd"
28 | },
29 | "bugs": {
30 | "url": "https://github.com/wesleytodd/setprototypeof/issues"
31 | },
32 | "bundleDependencies": false,
33 | "deprecated": false,
34 | "description": "A small polyfill for Object.setprototypeof",
35 | "homepage": "https://github.com/wesleytodd/setprototypeof",
36 | "keywords": [
37 | "polyfill",
38 | "object",
39 | "setprototypeof"
40 | ],
41 | "license": "ISC",
42 | "main": "index.js",
43 | "name": "setprototypeof",
44 | "repository": {
45 | "type": "git",
46 | "url": "git+https://github.com/wesleytodd/setprototypeof.git"
47 | },
48 | "scripts": {
49 | "test": "echo \"Error: no test specified\" && exit 1"
50 | },
51 | "version": "1.0.3"
52 | }
53 |
--------------------------------------------------------------------------------
/server/node_modules/statuses/HISTORY.md:
--------------------------------------------------------------------------------
1 | 1.3.1 / 2016-11-11
2 | ==================
3 |
4 | * Fix return type in JSDoc
5 |
6 | 1.3.0 / 2016-05-17
7 | ==================
8 |
9 | * Add `421 Misdirected Request`
10 | * perf: enable strict mode
11 |
12 | 1.2.1 / 2015-02-01
13 | ==================
14 |
15 | * Fix message for status 451
16 | - `451 Unavailable For Legal Reasons`
17 |
18 | 1.2.0 / 2014-09-28
19 | ==================
20 |
21 | * Add `208 Already Repored`
22 | * Add `226 IM Used`
23 | * Add `306 (Unused)`
24 | * Add `415 Unable For Legal Reasons`
25 | * Add `508 Loop Detected`
26 |
27 | 1.1.1 / 2014-09-24
28 | ==================
29 |
30 | * Add missing 308 to `codes.json`
31 |
32 | 1.1.0 / 2014-09-21
33 | ==================
34 |
35 | * Add `codes.json` for universal support
36 |
37 | 1.0.4 / 2014-08-20
38 | ==================
39 |
40 | * Package cleanup
41 |
42 | 1.0.3 / 2014-06-08
43 | ==================
44 |
45 | * Add 308 to `.redirect` category
46 |
47 | 1.0.2 / 2014-03-13
48 | ==================
49 |
50 | * Add `.retry` category
51 |
52 | 1.0.1 / 2014-03-12
53 | ==================
54 |
55 | * Initial release
56 |
--------------------------------------------------------------------------------
/server/node_modules/statuses/LICENSE:
--------------------------------------------------------------------------------
1 |
2 | The MIT License (MIT)
3 |
4 | Copyright (c) 2014 Jonathan Ong me@jongleberry.com
5 | Copyright (c) 2016 Douglas Christopher Wilson doug@somethingdoug.com
6 |
7 | Permission is hereby granted, free of charge, to any person obtaining a copy
8 | of this software and associated documentation files (the "Software"), to deal
9 | in the Software without restriction, including without limitation the rights
10 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
11 | copies of the Software, and to permit persons to whom the Software is
12 | furnished to do so, subject to the following conditions:
13 |
14 | The above copyright notice and this permission notice shall be included in
15 | all copies or substantial portions of the Software.
16 |
17 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
18 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
19 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
20 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
21 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
22 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
23 | THE SOFTWARE.
24 |
--------------------------------------------------------------------------------
/server/node_modules/statuses/codes.json:
--------------------------------------------------------------------------------
1 | {
2 | "100": "Continue",
3 | "101": "Switching Protocols",
4 | "102": "Processing",
5 | "200": "OK",
6 | "201": "Created",
7 | "202": "Accepted",
8 | "203": "Non-Authoritative Information",
9 | "204": "No Content",
10 | "205": "Reset Content",
11 | "206": "Partial Content",
12 | "207": "Multi-Status",
13 | "208": "Already Reported",
14 | "226": "IM Used",
15 | "300": "Multiple Choices",
16 | "301": "Moved Permanently",
17 | "302": "Found",
18 | "303": "See Other",
19 | "304": "Not Modified",
20 | "305": "Use Proxy",
21 | "306": "(Unused)",
22 | "307": "Temporary Redirect",
23 | "308": "Permanent Redirect",
24 | "400": "Bad Request",
25 | "401": "Unauthorized",
26 | "402": "Payment Required",
27 | "403": "Forbidden",
28 | "404": "Not Found",
29 | "405": "Method Not Allowed",
30 | "406": "Not Acceptable",
31 | "407": "Proxy Authentication Required",
32 | "408": "Request Timeout",
33 | "409": "Conflict",
34 | "410": "Gone",
35 | "411": "Length Required",
36 | "412": "Precondition Failed",
37 | "413": "Payload Too Large",
38 | "414": "URI Too Long",
39 | "415": "Unsupported Media Type",
40 | "416": "Range Not Satisfiable",
41 | "417": "Expectation Failed",
42 | "418": "I'm a teapot",
43 | "421": "Misdirected Request",
44 | "422": "Unprocessable Entity",
45 | "423": "Locked",
46 | "424": "Failed Dependency",
47 | "425": "Unordered Collection",
48 | "426": "Upgrade Required",
49 | "428": "Precondition Required",
50 | "429": "Too Many Requests",
51 | "431": "Request Header Fields Too Large",
52 | "451": "Unavailable For Legal Reasons",
53 | "500": "Internal Server Error",
54 | "501": "Not Implemented",
55 | "502": "Bad Gateway",
56 | "503": "Service Unavailable",
57 | "504": "Gateway Timeout",
58 | "505": "HTTP Version Not Supported",
59 | "506": "Variant Also Negotiates",
60 | "507": "Insufficient Storage",
61 | "508": "Loop Detected",
62 | "509": "Bandwidth Limit Exceeded",
63 | "510": "Not Extended",
64 | "511": "Network Authentication Required"
65 | }
--------------------------------------------------------------------------------
/server/node_modules/type-is/LICENSE:
--------------------------------------------------------------------------------
1 | (The MIT License)
2 |
3 | Copyright (c) 2014 Jonathan Ong
4 | Copyright (c) 2014-2015 Douglas Christopher Wilson
5 |
6 | Permission is hereby granted, free of charge, to any person obtaining
7 | a copy of this software and associated documentation files (the
8 | 'Software'), to deal in the Software without restriction, including
9 | without limitation the rights to use, copy, modify, merge, publish,
10 | distribute, sublicense, and/or sell copies of the Software, and to
11 | permit persons to whom the Software is furnished to do so, subject to
12 | the following conditions:
13 |
14 | The above copyright notice and this permission notice shall be
15 | included in all copies or substantial portions of the Software.
16 |
17 | THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
18 | EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
19 | MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
20 | IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
21 | CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
22 | TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
23 | SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
24 |
--------------------------------------------------------------------------------
/server/node_modules/unpipe/HISTORY.md:
--------------------------------------------------------------------------------
1 | 1.0.0 / 2015-06-14
2 | ==================
3 |
4 | * Initial release
5 |
--------------------------------------------------------------------------------
/server/node_modules/unpipe/LICENSE:
--------------------------------------------------------------------------------
1 | (The MIT License)
2 |
3 | Copyright (c) 2015 Douglas Christopher Wilson
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining
6 | a copy of this software and associated documentation files (the
7 | 'Software'), to deal in the Software without restriction, including
8 | without limitation the rights to use, copy, modify, merge, publish,
9 | distribute, sublicense, and/or sell copies of the Software, and to
10 | permit persons to whom the Software is furnished to do so, subject to
11 | the following conditions:
12 |
13 | The above copyright notice and this permission notice shall be
14 | included in all copies or substantial portions of the Software.
15 |
16 | THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
17 | EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
18 | MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
19 | IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
20 | CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
21 | TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
22 | SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
23 |
--------------------------------------------------------------------------------
/server/node_modules/unpipe/README.md:
--------------------------------------------------------------------------------
1 | # unpipe
2 |
3 | [![NPM Version][npm-image]][npm-url]
4 | [![NPM Downloads][downloads-image]][downloads-url]
5 | [![Node.js Version][node-image]][node-url]
6 | [![Build Status][travis-image]][travis-url]
7 | [![Test Coverage][coveralls-image]][coveralls-url]
8 |
9 | Unpipe a stream from all destinations.
10 |
11 | ## Installation
12 |
13 | ```sh
14 | $ npm install unpipe
15 | ```
16 |
17 | ## API
18 |
19 | ```js
20 | var unpipe = require('unpipe')
21 | ```
22 |
23 | ### unpipe(stream)
24 |
25 | Unpipes all destinations from a given stream. With stream 2+, this is
26 | equivalent to `stream.unpipe()`. When used with streams 1 style streams
27 | (typically Node.js 0.8 and below), this module attempts to undo the
28 | actions done in `stream.pipe(dest)`.
29 |
30 | ## License
31 |
32 | [MIT](LICENSE)
33 |
34 | [npm-image]: https://img.shields.io/npm/v/unpipe.svg
35 | [npm-url]: https://npmjs.org/package/unpipe
36 | [node-image]: https://img.shields.io/node/v/unpipe.svg
37 | [node-url]: http://nodejs.org/download/
38 | [travis-image]: https://img.shields.io/travis/stream-utils/unpipe.svg
39 | [travis-url]: https://travis-ci.org/stream-utils/unpipe
40 | [coveralls-image]: https://img.shields.io/coveralls/stream-utils/unpipe.svg
41 | [coveralls-url]: https://coveralls.io/r/stream-utils/unpipe?branch=master
42 | [downloads-image]: https://img.shields.io/npm/dm/unpipe.svg
43 | [downloads-url]: https://npmjs.org/package/unpipe
44 |
--------------------------------------------------------------------------------
/server/node_modules/unpipe/index.js:
--------------------------------------------------------------------------------
1 | /*!
2 | * unpipe
3 | * Copyright(c) 2015 Douglas Christopher Wilson
4 | * MIT Licensed
5 | */
6 |
7 | 'use strict'
8 |
9 | /**
10 | * Module exports.
11 | * @public
12 | */
13 |
14 | module.exports = unpipe
15 |
16 | /**
17 | * Determine if there are Node.js pipe-like data listeners.
18 | * @private
19 | */
20 |
21 | function hasPipeDataListeners(stream) {
22 | var listeners = stream.listeners('data')
23 |
24 | for (var i = 0; i < listeners.length; i++) {
25 | if (listeners[i].name === 'ondata') {
26 | return true
27 | }
28 | }
29 |
30 | return false
31 | }
32 |
33 | /**
34 | * Unpipe a stream from all destinations.
35 | *
36 | * @param {object} stream
37 | * @public
38 | */
39 |
40 | function unpipe(stream) {
41 | if (!stream) {
42 | throw new TypeError('argument stream is required')
43 | }
44 |
45 | if (typeof stream.unpipe === 'function') {
46 | // new-style
47 | stream.unpipe()
48 | return
49 | }
50 |
51 | // Node.js 0.8 hack
52 | if (!hasPipeDataListeners(stream)) {
53 | return
54 | }
55 |
56 | var listener
57 | var listeners = stream.listeners('close')
58 |
59 | for (var i = 0; i < listeners.length; i++) {
60 | listener = listeners[i]
61 |
62 | if (listener.name !== 'cleanup' && listener.name !== 'onclose') {
63 | continue
64 | }
65 |
66 | // invoke the listener
67 | listener.call(stream)
68 | }
69 | }
70 |
--------------------------------------------------------------------------------
/server/node_modules/unpipe/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "_from": "unpipe@~1.0.0",
3 | "_id": "unpipe@1.0.0",
4 | "_inBundle": false,
5 | "_integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=",
6 | "_location": "/unpipe",
7 | "_phantomChildren": {},
8 | "_requested": {
9 | "type": "range",
10 | "registry": true,
11 | "raw": "unpipe@~1.0.0",
12 | "name": "unpipe",
13 | "escapedName": "unpipe",
14 | "rawSpec": "~1.0.0",
15 | "saveSpec": null,
16 | "fetchSpec": "~1.0.0"
17 | },
18 | "_requiredBy": [
19 | "/finalhandler"
20 | ],
21 | "_resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz",
22 | "_shasum": "b2bf4ee8514aae6165b4817829d21b2ef49904ec",
23 | "_spec": "unpipe@~1.0.0",
24 | "_where": "/Users/stephengrider/workspace/FullstackWorkspace/prod/server/node_modules/finalhandler",
25 | "author": {
26 | "name": "Douglas Christopher Wilson",
27 | "email": "doug@somethingdoug.com"
28 | },
29 | "bugs": {
30 | "url": "https://github.com/stream-utils/unpipe/issues"
31 | },
32 | "bundleDependencies": false,
33 | "deprecated": false,
34 | "description": "Unpipe a stream from all destinations",
35 | "devDependencies": {
36 | "istanbul": "0.3.15",
37 | "mocha": "2.2.5",
38 | "readable-stream": "1.1.13"
39 | },
40 | "engines": {
41 | "node": ">= 0.8"
42 | },
43 | "files": [
44 | "HISTORY.md",
45 | "LICENSE",
46 | "README.md",
47 | "index.js"
48 | ],
49 | "homepage": "https://github.com/stream-utils/unpipe#readme",
50 | "license": "MIT",
51 | "name": "unpipe",
52 | "repository": {
53 | "type": "git",
54 | "url": "git+https://github.com/stream-utils/unpipe.git"
55 | },
56 | "scripts": {
57 | "test": "mocha --reporter spec --bail --check-leaks test/",
58 | "test-cov": "istanbul cover node_modules/mocha/bin/_mocha -- --reporter dot --check-leaks test/",
59 | "test-travis": "istanbul cover node_modules/mocha/bin/_mocha --report lcovonly -- --reporter spec --check-leaks test/"
60 | },
61 | "version": "1.0.0"
62 | }
63 |
--------------------------------------------------------------------------------
/server/node_modules/utils-merge/.travis.yml:
--------------------------------------------------------------------------------
1 | language: "node_js"
2 | node_js:
3 | - "0.4"
4 | - "0.6"
5 | - "0.8"
6 | - "0.10"
7 |
--------------------------------------------------------------------------------
/server/node_modules/utils-merge/LICENSE:
--------------------------------------------------------------------------------
1 | (The MIT License)
2 |
3 | Copyright (c) 2013 Jared Hanson
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy of
6 | this software and associated documentation files (the "Software"), to deal in
7 | the Software without restriction, including without limitation the rights to
8 | use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
9 | the Software, and to permit persons to whom the Software is furnished to do so,
10 | subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
17 | FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
18 | COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
19 | IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
20 | CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
21 |
--------------------------------------------------------------------------------
/server/node_modules/utils-merge/README.md:
--------------------------------------------------------------------------------
1 | # utils-merge
2 |
3 | Merges the properties from a source object into a destination object.
4 |
5 | ## Install
6 |
7 | $ npm install utils-merge
8 |
9 | ## Usage
10 |
11 | ```javascript
12 | var a = { foo: 'bar' }
13 | , b = { bar: 'baz' };
14 |
15 | merge(a, b);
16 | // => { foo: 'bar', bar: 'baz' }
17 | ```
18 |
19 | ## Tests
20 |
21 | $ npm install
22 | $ npm test
23 |
24 | [](http://travis-ci.org/jaredhanson/utils-merge)
25 |
26 | ## Credits
27 |
28 | - [Jared Hanson](http://github.com/jaredhanson)
29 |
30 | ## License
31 |
32 | [The MIT License](http://opensource.org/licenses/MIT)
33 |
34 | Copyright (c) 2013 Jared Hanson <[http://jaredhanson.net/](http://jaredhanson.net/)>
35 |
--------------------------------------------------------------------------------
/server/node_modules/utils-merge/index.js:
--------------------------------------------------------------------------------
1 | /**
2 | * Merge object b with object a.
3 | *
4 | * var a = { foo: 'bar' }
5 | * , b = { bar: 'baz' };
6 | *
7 | * merge(a, b);
8 | * // => { foo: 'bar', bar: 'baz' }
9 | *
10 | * @param {Object} a
11 | * @param {Object} b
12 | * @return {Object}
13 | * @api public
14 | */
15 |
16 | exports = module.exports = function(a, b){
17 | if (a && b) {
18 | for (var key in b) {
19 | a[key] = b[key];
20 | }
21 | }
22 | return a;
23 | };
24 |
--------------------------------------------------------------------------------
/server/node_modules/utils-merge/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "_from": "utils-merge@1.0.0",
3 | "_id": "utils-merge@1.0.0",
4 | "_inBundle": false,
5 | "_integrity": "sha1-ApT7kiu5N1FTVBxPcJYjHyh8ivg=",
6 | "_location": "/utils-merge",
7 | "_phantomChildren": {},
8 | "_requested": {
9 | "type": "version",
10 | "registry": true,
11 | "raw": "utils-merge@1.0.0",
12 | "name": "utils-merge",
13 | "escapedName": "utils-merge",
14 | "rawSpec": "1.0.0",
15 | "saveSpec": null,
16 | "fetchSpec": "1.0.0"
17 | },
18 | "_requiredBy": [
19 | "/express"
20 | ],
21 | "_resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.0.tgz",
22 | "_shasum": "0294fb922bb9375153541c4f7096231f287c8af8",
23 | "_spec": "utils-merge@1.0.0",
24 | "_where": "/Users/stephengrider/workspace/FullstackWorkspace/prod/server/node_modules/express",
25 | "author": {
26 | "name": "Jared Hanson",
27 | "email": "jaredhanson@gmail.com",
28 | "url": "http://www.jaredhanson.net/"
29 | },
30 | "bugs": {
31 | "url": "http://github.com/jaredhanson/utils-merge/issues"
32 | },
33 | "bundleDependencies": false,
34 | "dependencies": {},
35 | "deprecated": false,
36 | "description": "merge() utility function",
37 | "devDependencies": {
38 | "chai": "1.x.x",
39 | "mocha": "1.x.x"
40 | },
41 | "engines": {
42 | "node": ">= 0.4.0"
43 | },
44 | "homepage": "https://github.com/jaredhanson/utils-merge#readme",
45 | "keywords": [
46 | "util"
47 | ],
48 | "licenses": [
49 | {
50 | "type": "MIT",
51 | "url": "http://www.opensource.org/licenses/MIT"
52 | }
53 | ],
54 | "main": "./index",
55 | "name": "utils-merge",
56 | "repository": {
57 | "type": "git",
58 | "url": "git://github.com/jaredhanson/utils-merge.git"
59 | },
60 | "scripts": {
61 | "test": "mocha --reporter spec --require test/bootstrap/node test/*.test.js"
62 | },
63 | "version": "1.0.0"
64 | }
65 |
--------------------------------------------------------------------------------
/server/node_modules/vary/HISTORY.md:
--------------------------------------------------------------------------------
1 | 1.1.1 / 2017-03-20
2 | ==================
3 |
4 | * perf: hoist regular expression
5 |
6 | 1.1.0 / 2015-09-29
7 | ==================
8 |
9 | * Only accept valid field names in the `field` argument
10 | - Ensures the resulting string is a valid HTTP header value
11 |
12 | 1.0.1 / 2015-07-08
13 | ==================
14 |
15 | * Fix setting empty header from empty `field`
16 | * perf: enable strict mode
17 | * perf: remove argument reassignments
18 |
19 | 1.0.0 / 2014-08-10
20 | ==================
21 |
22 | * Accept valid `Vary` header string as `field`
23 | * Add `vary.append` for low-level string manipulation
24 | * Move to `jshttp` orgainzation
25 |
26 | 0.1.0 / 2014-06-05
27 | ==================
28 |
29 | * Support array of fields to set
30 |
31 | 0.0.0 / 2014-06-04
32 | ==================
33 |
34 | * Initial release
35 |
--------------------------------------------------------------------------------
/server/node_modules/vary/LICENSE:
--------------------------------------------------------------------------------
1 | (The MIT License)
2 |
3 | Copyright (c) 2014-2017 Douglas Christopher Wilson
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining
6 | a copy of this software and associated documentation files (the
7 | 'Software'), to deal in the Software without restriction, including
8 | without limitation the rights to use, copy, modify, merge, publish,
9 | distribute, sublicense, and/or sell copies of the Software, and to
10 | permit persons to whom the Software is furnished to do so, subject to
11 | the following conditions:
12 |
13 | The above copyright notice and this permission notice shall be
14 | included in all copies or substantial portions of the Software.
15 |
16 | THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
17 | EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
18 | MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
19 | IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
20 | CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
21 | TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
22 | SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
23 |
--------------------------------------------------------------------------------
/server/node_modules/vary/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "_from": "vary@~1.1.1",
3 | "_id": "vary@1.1.1",
4 | "_inBundle": false,
5 | "_integrity": "sha1-Z1Neu2lMHVIldFeYRmUyP1h+jTc=",
6 | "_location": "/vary",
7 | "_phantomChildren": {},
8 | "_requested": {
9 | "type": "range",
10 | "registry": true,
11 | "raw": "vary@~1.1.1",
12 | "name": "vary",
13 | "escapedName": "vary",
14 | "rawSpec": "~1.1.1",
15 | "saveSpec": null,
16 | "fetchSpec": "~1.1.1"
17 | },
18 | "_requiredBy": [
19 | "/express"
20 | ],
21 | "_resolved": "https://registry.npmjs.org/vary/-/vary-1.1.1.tgz",
22 | "_shasum": "67535ebb694c1d52257457984665323f587e8d37",
23 | "_spec": "vary@~1.1.1",
24 | "_where": "/Users/stephengrider/workspace/FullstackWorkspace/prod/server/node_modules/express",
25 | "author": {
26 | "name": "Douglas Christopher Wilson",
27 | "email": "doug@somethingdoug.com"
28 | },
29 | "bugs": {
30 | "url": "https://github.com/jshttp/vary/issues"
31 | },
32 | "bundleDependencies": false,
33 | "deprecated": false,
34 | "description": "Manipulate the HTTP Vary header",
35 | "devDependencies": {
36 | "eslint": "3.18.0",
37 | "eslint-config-standard": "7.1.0",
38 | "eslint-plugin-markdown": "1.0.0-beta.4",
39 | "eslint-plugin-promise": "3.5.0",
40 | "eslint-plugin-standard": "2.1.1",
41 | "istanbul": "0.4.5",
42 | "mocha": "2.5.3",
43 | "supertest": "1.1.0"
44 | },
45 | "engines": {
46 | "node": ">= 0.8"
47 | },
48 | "files": [
49 | "HISTORY.md",
50 | "LICENSE",
51 | "README.md",
52 | "index.js"
53 | ],
54 | "homepage": "https://github.com/jshttp/vary#readme",
55 | "keywords": [
56 | "http",
57 | "res",
58 | "vary"
59 | ],
60 | "license": "MIT",
61 | "name": "vary",
62 | "repository": {
63 | "type": "git",
64 | "url": "git+https://github.com/jshttp/vary.git"
65 | },
66 | "scripts": {
67 | "lint": "eslint --plugin markdown --ext js,md .",
68 | "test": "mocha --reporter spec --bail --check-leaks test/",
69 | "test-cov": "istanbul cover node_modules/mocha/bin/_mocha -- --reporter dot --check-leaks test/",
70 | "test-travis": "istanbul cover node_modules/mocha/bin/_mocha --report lcovonly -- --reporter spec --check-leaks test/"
71 | },
72 | "version": "1.1.1"
73 | }
74 |
--------------------------------------------------------------------------------
/server/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "server",
3 | "version": "1.0.0",
4 | "description": "",
5 | "main": "index.js",
6 | "engines": {
7 | "node": "8.1.1",
8 | "npm": "5.0.3"
9 | },
10 | "scripts": {
11 | "start": "node index.js",
12 | "server": "nodemon index.js",
13 | "client": "npm run start --prefix client",
14 | "dev": "concurrently \"npm run server\" \"npm run client\" \"npm run webhook\"",
15 | "heroku-postbuild": "NPM_CONFIG_PRODUCTION=false npm install --prefix client && npm run build --prefix client",
16 | "webhook": "./sendgrid_webhook.sh"
17 | },
18 | "author": "",
19 | "license": "ISC",
20 | "dependencies": {
21 | "body-parser": "^1.17.2",
22 | "concurrently": "^3.5.0",
23 | "cookie-session": "^2.0.0-beta.2",
24 | "express": "^4.15.3",
25 | "localtunnel": "^1.8.3",
26 | "lodash": "^4.17.4",
27 | "mongoose": "^4.11.1",
28 | "nodemon": "^1.11.0",
29 | "passport": "^0.3.2",
30 | "passport-google-oauth20": "^1.0.0",
31 | "path-parser": "^2.0.2",
32 | "sendgrid": "^5.1.2",
33 | "stripe": "^4.23.1"
34 | }
35 | }
36 |
--------------------------------------------------------------------------------
/server/routes/authRoutes.js:
--------------------------------------------------------------------------------
1 | const passport = require('passport');
2 |
3 | module.exports = app => {
4 | app.get(
5 | '/auth/google',
6 | passport.authenticate('google', {
7 | scope: ['profile', 'email']
8 | })
9 | );
10 |
11 | app.get(
12 | '/auth/google/callback',
13 | passport.authenticate('google'),
14 | (req, res) => {
15 | res.redirect('/surveys');
16 | }
17 | );
18 |
19 | app.get('/api/logout', (req, res) => {
20 | req.logout();
21 | res.redirect('/');
22 | });
23 |
24 | app.get('/api/current_user', (req, res) => {
25 | res.send(req.user);
26 | });
27 | };
28 |
--------------------------------------------------------------------------------
/server/routes/billingRoutes.js:
--------------------------------------------------------------------------------
1 | const keys = require('../config/keys');
2 | const stripe = require('stripe')(keys.stripeSecretKey);
3 | const requireLogin = require('../middlewares/requireLogin');
4 |
5 | module.exports = app => {
6 | app.post('/api/stripe', requireLogin, async (req, res) => {
7 | const charge = await stripe.charges.create({
8 | amount: 500,
9 | currency: 'usd',
10 | description: '$5 for 5 credits',
11 | source: req.body.id
12 | });
13 |
14 | req.user.credits += 5;
15 | const user = await req.user.save();
16 |
17 | res.send(user);
18 | });
19 | };
20 |
--------------------------------------------------------------------------------
/server/sendgrid_webhook.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 | # make sure you have execute permissions:
3 | # cd /path/to/project
4 | # chmod +x ./sendgrid_webhook.sh
5 | # to run, type ./sendgrid_webhook.sh in the terminal
6 |
7 | function localtunnel {
8 | lt -s lairjgliargli --port 5000
9 | }
10 |
11 | until localtunnel; do
12 | echo "localtunnel server crashed"
13 | sleep 2
14 | done
15 |
--------------------------------------------------------------------------------
/server/services/Mailer.js:
--------------------------------------------------------------------------------
1 | const sendgrid = require('sendgrid');
2 | const helper = sendgrid.mail;
3 | const keys = require('../config/keys');
4 |
5 | class Mailer extends helper.Mail {
6 | constructor({ subject, recipients }, content) {
7 | super();
8 |
9 | this.sgApi = sendgrid(keys.sendGridKey);
10 | this.from_email = new helper.Email('no-reply@emaily.com');
11 | this.subject = subject;
12 | this.body = new helper.Content('text/html', content);
13 | this.recipients = this.formatAddresses(recipients);
14 |
15 | this.addContent(this.body);
16 | this.addClickTracking();
17 | this.addRecipients();
18 | }
19 |
20 | formatAddresses(recipients) {
21 | return recipients.map(({ email }) => {
22 | return new helper.Email(email);
23 | });
24 | }
25 |
26 | addClickTracking() {
27 | const trackingSettings = new helper.TrackingSettings();
28 | const clickTracking = new helper.ClickTracking(true, true);
29 |
30 | trackingSettings.setClickTracking(clickTracking);
31 | this.addTrackingSettings(trackingSettings);
32 | }
33 |
34 | addRecipients() {
35 | const personalize = new helper.Personalization();
36 |
37 | this.recipients.forEach(recipient => {
38 | personalize.addTo(recipient);
39 | });
40 | this.addPersonalization(personalize);
41 | }
42 |
43 | async send() {
44 | const request = this.sgApi.emptyRequest({
45 | method: 'POST',
46 | path: '/v3/mail/send',
47 | body: this.toJSON()
48 | });
49 |
50 | const response = await this.sgApi.API(request);
51 | return response;
52 | }
53 | }
54 |
55 | module.exports = Mailer;
56 |
--------------------------------------------------------------------------------
/server/services/emailTemplates/surveyTemplate.js:
--------------------------------------------------------------------------------
1 | const keys = require('../../config/keys');
2 |
3 | module.exports = survey => {
4 | return `
5 |
6 |
7 |
8 |
I'd like your input!
9 |
Please answer the following question:
10 |
${survey.body}
11 |
14 |
17 |
18 |
19 |
20 | `;
21 | };
22 |
--------------------------------------------------------------------------------
/server/services/passport.js:
--------------------------------------------------------------------------------
1 | const passport = require('passport');
2 | const GoogleStrategy = require('passport-google-oauth20').Strategy;
3 | const mongoose = require('mongoose');
4 | const keys = require('../config/keys');
5 |
6 | const User = mongoose.model('users');
7 |
8 | passport.serializeUser((user, done) => {
9 | done(null, user.id);
10 | });
11 |
12 | passport.deserializeUser((id, done) => {
13 | User.findById(id).then(user => {
14 | done(null, user);
15 | });
16 | });
17 |
18 | passport.use(
19 | new GoogleStrategy(
20 | {
21 | clientID: keys.googleClientID,
22 | clientSecret: keys.googleClientSecret,
23 | callbackURL: '/auth/google/callback',
24 | proxy: true
25 | },
26 | async (accessToken, refreshToken, profile, done) => {
27 | const existingUser = await User.findOne({ googleId: profile.id });
28 |
29 | if (existingUser) {
30 | return done(null, existingUser);
31 | }
32 |
33 | const user = await new User({ googleId: profile.id }).save();
34 | done(null, user);
35 | }
36 | )
37 | );
38 |
--------------------------------------------------------------------------------